J’ai le script batch suivant
@echo off setlocal set TEST_DIR="E:/img" :: for all png files in TEST_DIR for /r "%TEST_DIR%" %%f in (*.png) do ( :: print file full path echo TESTING %%f :: store the path into MY_VAR set MY_VAR=%%f :: print MY_VAR (always blank!?) echo TESTING %MY_VAR% ) endlocal
L’impression de MY_VAR est toujours vide. Pourquoi donc?
Si le répertoire img contient 2 fichiers png: – img1.png – img2.png
alors voici la sortie de la console:
E:\img>test.cmd TESTING E:\img\img1.png TESTING TESTING E:\img\img2.png TESTING
Merci
J’ai corrigé le script pour utiliser l’extension retardée.
@echo off setlocal enableDelayedExpansion set TEST_DIR="E:/img" :: for all png files in TEST_DIR for /r "%TEST_DIR%" %%f in (*.png) do ( :: print file full path echo TESTING %%f :: store the path into MY_VAR set MY_VAR=%%f :: print MY_VAR echo TESTING !MY_VAR! ) endlocal
La sortie est maintenant correcte.
E:\img>test.cmd TESTING E:\img\img1.png TESTING E:\img\img1.png TESTING E:\img\img2.png TESTING E:\img\img2.png
Je vous remercie.