Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème de script

2 réponses
Avatar
Guillaume
Bonjour à tous
J'ai un petit soucis avec un script et des variables. Il semble que lorsque
l'on fait un "call :etiquette" dans un script les variables modifié dans la
procédure ":etiquette" ne sont pas conservées. Voila en gros ce qui se passe :

set Var1=LaValeurEst1
commandeA
commandeB
if 1=1 call :toto
echo %Var1% >>me renvoi "LaValeurEst1" alors que je voudrais "LaValeurEst2"
End
:toto
set var1=LaValeurEst2
goto :eof

Y à t'il un moyen de "faire suivre" la valeurs des variables entre les
routines/sous-routines ?
J'espere que j'ai été assez clair dans mes explications.
Merci de votre aide.

Guillaume

2 réponses

Avatar
Gilles LAURENT
"Guillaume" a écrit dans le
message de news:
| Bonjour à tous

Bonjour,

| J'ai un petit soucis avec un script et des variables. Il semble que
| lorsque l'on fait un "call :etiquette" dans un script les variables
| modifié dans la procédure ":etiquette" ne sont pas conservées. Voila
| en gros ce qui se passe :
|
| set Var1=LaValeurEst1
| commandeA
| commandeB
| if 1=1 call :toto
| echo %Var1% >>me renvoi "LaValeurEst1" alors que je voudrais
| "LaValeurEst2" End
|| toto
| set var1=LaValeurEst2
| goto :eof
|
| Y à t'il un moyen de "faire suivre" la valeurs des variables entre les
| routines/sous-routines ?
| J'espere que j'ai été assez clair dans mes explications.
| Merci de votre aide.
|
| Guillaume

Non, cela fonctionne correctement. Pouvez-vous vérifier que vous
effectuez bien le branchement sur l'étiquette toto ? J'ai l'impression
que le problème provient de là.

--- Coupez ici : var.cmd ---
@echo off
set var=1
call :change
echo %var%
goto :eof

:change
set var=2
--- Coupez ici : var.cmd ---

D:Test> var.cmd
2

--
Gilles LAURENT
http://glsft.free.fr
Avatar
Guillaume
Non, cela fonctionne correctement. Pouvez-vous vérifier que vous
effectuez bien le branchement sur l'étiquette toto ? J'ai l'impression
que le problème provient de là.

--- Coupez ici : var.cmd ---
@echo off
set var=1
call :change
echo %var%
goto :eof

:change
set var=2
--- Coupez ici : var.cmd ---

D:Test> var.cmd
Merci pour votre réponse.

Je n'ai pas bien retranscri mon script. Il y avait une boucle "for" au
milieu. Je ne sais pas pourquoi, mais j'avais oublié d'activé l'expansion
retardée. Donc finalement j'ai résolu mon problème.
Désolé pour le dérangement :)
Bonne journée.

Guillaume