(.bat) Incrementation dans boucle FOR

Fermé
chevinou - 17 juin 2019 à 08:01
dubcek Messages postés 18752 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 3 octobre 2024 - 17 juin 2019 à 13:56
Bonjour à tous et à toutes,

Après maintes recherches, je tombe sur une situation que je ne comprend pas.

Je souhaite renommer un lot de fichiers avec un .bat à l'aide de la commande suivante:

set /a new=0
for %%x in (C:\Users\Tag\Music\test\*.mp3) do set /a new+=1 && echo %new% && pause && ren "%%~fx" "%new%_%%~nxx"

mais, pour une raison que j'ignore, ma variable "new" reste à zéro, sauf si, je passe la commande suivante:

set /a new=0
for %%x in (C:\Users\Tag\Music\test\*.mp3) do set /a new+=1
echo %new%


Cependant, l'ensemble des fichiers prennent un "zéro_" en début de nom (La derniere commande , la pause ainsi que l'echo passent donc)

alors, existe t-il une règle qui interdit l'incrementation des variables dans une boucle for?

J'ai également tenté ceci:

set /a new=0
for %%x in (C:\Users\Tag\Music\test\*.mp3) do (
   Set /a new=1
   echo %new%
   pause
   ren "%%~fx" "%new%_%%~nxx"
)


S'agit-il d'une erreur de syntaxe?

En vous remerciant

1 réponse

dubcek Messages postés 18752 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 3 octobre 2024 5 619
17 juin 2019 à 10:32
hello
essayer avec
setlocal enableDelayedExpansion
set /a new=0
for %%x in (C:\Users\Tag\Music\test\*.mp3) do set /a new+=1 && echo !new! && pause && ren "%%~fx" "!new!_%%~nxx

à l'intérieur de la boucle la variable new est référencée avec !new! et pas %new%
0
dubcek Messages postés 18752 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 3 octobre 2024 5 619
17 juin 2019 à 13:56
voir là https://openclassrooms.com/fr/courses/1945566-automatisez-vos-taches-avec-batch/2831866-lexpansion-retardee

je ne trouve rien dans la doc DOS
0