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...
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
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 TERMINESi quelqu'un pouvait m'aiguiller...
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
Merci bien d'avance !!
Partager