Affectation de variable dans boucle FOR batch

Fermé
EFFERALGAN - 25 oct. 2007 à 12:08
 cycy99 - 15 juin 2017 à 14:45
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

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
merci aidé en 2017 !!!
0
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 18752 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 3 octobre 2024 5 619
25 oct. 2007 à 12:41
et avec set mavar=%E%
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

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

Posez votre question
dubcek Messages postés 18752 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 3 octobre 2024 5 619
25 oct. 2007 à 13:53
et avec set mavar=%%E%
0
LeGrandSchlougy
4 juil. 2014 à 11:34
Et même en 2014 ce post continue d'aider.
Merci efferalgan !
0
Et même en 2015 :D
0
Et même en 2016 =p
0
je confirme même en 2016 !
0