Affectation de variable dans boucle FOR batch

Bonjour,
Petit problème dans l'affectation de variable dans une boucle FOR dans un batch DOS

Ceci marche : (affichage du 4e token est ok)

for /F %%D in (c:\Mon_fichier) do (
	for /F "tokens=4 delims=\" %%E in ("%%D") do (
		echo %%E
		pause
	)
)


Ceci ne marche pas : (%mavar% semble vide)
for /F %%D in (c:\Mon_fichier) do (
	for /F "tokens=4 delims=\" %%E in ("%%D") do (
		set mavar=%%E
		echo %mavar%
		pause
	)
)


Quelqu'un a une idée?
d'avance merci

Damien
Configuration: Windows 2003
Internet Explorer 7.0

6 réponses

  1. Trouvé : il s'agit d'un probleme d'affectation dynamique avec la commande set

    ouvrir une invite de commande, puis :

    cmd /V:ON
    c:\mon_batch.bat


    puis dans mon_batch.bat, au lieu d'utiliser %mavar% utiliser !mavar! :

    for /F %%D in (c:\Mon_fichier) do (
    	for /F "tokens=4 delims=\" %%E in ("%%D") do (
    		set mavar=%%E
    		echo !mavar!
    		pause
    	)
    )


    et ça marche.
    merci
    1. merci aidé en 2017 !!!
  2. Et même en 2014 ce post continue d'aider.
    Merci efferalgan !
    1. Et même en 2015 :D
    2. Et même en 2016 =p
    3. je confirme même en 2016 !
  3. Certes le sujet date de 2007, mais il me sert encore aujourd'hui !
    Je rajoute donc cette information : au lieu de taper la commande cmd /V:ON avant de lancer le batch, il est aussi possible de mettre la commande

    setlocal ENABLEDELAYEDEXPANSION

    en début de batch et

    endlocal

    en fin de batch
    1. %%E appelle le token selectionné
      lors de l'execution de set mavar=%%E, je vois bien passer mon token extrait correctement.
      set mavar=blablabla
      Le probleme est que la commande echo %mavar% ne renvoit rien du tout