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. %%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
    1. 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. 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 !