Salut,
Essaye ceci mais je pense que tu devras juste ajouter une condition parce que j'ai un peu "trop" modifié ton code et si le nom de dossier ne commence pas par un "0" il va quand même renommer
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
| @echo off & cls
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 "$nombase=%%a"
:: on supprime le "P" initial puis tous les éventuels "0" qui suivent
set "$nomnum=!$nombase:~1!"
for /f "tokens=* delims=0" %%x in ("!$nomnum!") do (
set "$nomnum=%%x"
:: Le nom du dossier est bien numérique
:: On essaye de traiter que les dossiers dont le nom est un nombre
set /a "$nom=!$nomnum!+500"
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 - Rendu final : "P!$nom!"
ren "%%a" "P!$nom!"
)
)
echo TRAITEMENT TERMINE
echo ---------------
echo.
pause
exit |
Tiens nous au courant.
EDIT: ajoute ta condition:
if "!$nombase:~0,1%!"=="0"
avant mon
for /f "tokens=* delims=0" %%x in ("!$nomnum!")
Partager