Affectation de variable dans boucle FOR batch

[Fermé]
Signaler
-
 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

6 réponses

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
11
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

merci aidé en 2017 !!!
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
Messages postés
18280
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
12 octobre 2021
5 392
et avec set mavar=%E%
%%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
Messages postés
18280
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
12 octobre 2021
5 392
et avec set mavar=%%E%

Et même en 2014 ce post continue d'aider.
Merci efferalgan !
Et même en 2015 :D
Et même en 2016 =p
je confirme même en 2016 !