windows lot DÉFINI à l'intérieur SI vous ne travaillez pas
quand je suis à l'exécution de ce script (à partir de un .fichier bat):
set var1=true
if "%var1%"=="true" (
set var2=myvalue
echo %var2%
)
J'obtiens toujours:
ECHO is on.
Sens de la var2
variable n'était pas vraiment ensemble.
Quelqu'un peut-il m'aider à comprendre pourquoi?
Vous devez vous connecter pour publier un commentaire.
var2 est défini, mais l'expansion de la ligne de
echo %var2%
se produit avant que le bloc est exécuté.À ce moment
var2
est vide.Donc la delayedExpansion syntaxe existe, il utilise
!
au lieu de%
et elle est évaluée au moment de l'exécution, pas à l'analyse.Veuillez noter que pour utiliser
!
, la déclaration supplémentairesetlocal EnableDelayedExpansion
est nécessaire.&
et&&
opérateurs. Ce codeset x=some & set y=%x%thing & echo results %y%
sorties%x%thing
.Je suis un peu en retard à la fête, mais une autre façon de gérer cette condition est de continuer la procédure en dehors de
if
, à l'instar de ceOu/et de l'utilisation
goto
syntaxeDe cette façon, l'expansion se produit "dans le temps" et vous n'avez pas besoin
setlocal EnableDelayedExpansion
. Bas de ligne, si vous repenser la conception de votre script, vous pouvez le faire comme ça