Bonjour tout le monde,

Je suis débutant en BATCH (plus habitué au Shell de Linux...). Je dois réaliser un script pour renuméroter une série de dossiers.
Alors après quelques récups de bout de scripts (oui j'ai honte...) et en rajoutant de mon propre code de débutant j'obtiens quelque-chose, mais :
  • ma boucle qui liste les fichiers s'interompt au premier passage
  • la variable initée par cette première boucle semble être perdue

Et ce, depuis que j'ai fait une boucle interne avec une balise :trim

Il ne me manque pas grand chose je pense pour faire marcher le tout...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
@echo off
Setlocal EnableDelayedExpansion
:: Renumérotation d'une série de dossier de type "PXXXXX" (exemples : P00050, P00500, P00807, P123456789)
:: en rajoutant 500 (résultats des exemples : P00550, P01000, P01307, P123457289)

for /F %%a in ('dir /ad /b') do (
:: Listing des fichiers
:: /ad = uniquement les répertoires
:: /b = juste les noms, pas les détails
    set $nom=%%a
    echo AVANT trim : !$nom!
    :: on supprime le "P" initial puis tous les éventuels "0" qui suivent
    :trim
    set $nom=!$nom:~1!
    if "!$nom:~0,1%!"=="0" (
        goto trim
    )
    echo APRES trim : !$nom!
	if $nom LSS 9999999999999999999 (
        :: Le nom du dossier est bien numérique
		:: On essaye de traiter que les dossiers dont le nom est un nombre
		echo TRAITEMENT DE !$nom!
        set /a $nom=!$nom!+500
        echo APRES AJOUT : !$nom!
		if $nom LSS 10000 (
			:: On ne rajoute des 0 devant que si le nombre contient au plus 4 chiffres
			set $nom=00000!$nom!
			set $nom=!$nom:~-5!
		)
		:: On rajoute un "P" devant
        echo AU FINAL : P!$nom!
		ren %%a P!$nom!
	)
)
echo TRAITEMENT TERMINE
Mais voilà ce qu'il se passe lorsque je l'exécute alors qu'il y a 4 dossiers à traiter :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
C:\Users\Serge\Documents\Boulot\Développements\scripts\batch>renamePXXXXX.bat
Le lecteur spécifié est introuvable.
AVANT trim : P00050
APRES trim : 50
Le lecteur spécifié est introuvable.
TRAITEMENT DE 50
APRES AJOUT : 550
AU FINAL : P00550
Le fichier spécifié est introuvable.
TRAITEMENT TERMINE
Si quelqu'un pouvait m'aiguiller...
Merci bien d'avance !!