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
    12
    1. merci aidé en 2017 !!!
      0
  2. 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
    6
    1. Contributeur
      et avec set mavar=%E%
      1
      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
        1
        1. Contributeur
          et avec set mavar=%%E%
          0
          1. Et même en 2014 ce post continue d'aider.
            Merci efferalgan !
            0
            1. Et même en 2015 :D
              0
            2. Et même en 2016 =p
              0
            3. je confirme même en 2016 !
              0