Affectation de variable dans boucle FOR batch

EFFERALGAN -  
 cycy99 -
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
A voir également:

6 réponses

efferalgan
 
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
cycy99
 
merci aidé en 2017 !!!
0
PhB
 
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
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
et avec set mavar=%E%
1
EFFERALGAN
 
%%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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
et avec set mavar=%%E%
0
LeGrandSchlougy
 
Et même en 2014 ce post continue d'aider.
Merci efferalgan !
0
GJA
 
Et même en 2015 :D
0
Suba
 
Et même en 2016 =p
0
Foenix
 
je confirme même en 2016 !
0