Impossible d’imprimer la variable en cmd batch

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.