Risposte:
var2 è impostato, ma l'espansione nella riga echo %var2%
avviene prima che il blocco venga eseguito.
In questo momento var2
è vuoto.
Pertanto esiste la sintassi delayedExpansion, che utilizza al !
posto di %
e viene valutata in fase di esecuzione, non in fase di analisi.
Si prega di notare che per utilizzare è necessaria la !
dichiarazione aggiuntiva setlocal EnableDelayedExpansion
.
setlocal EnableDelayedExpansion
set var1=true
if "%var1%"=="true" (
set var2=myvalue
echo !var2!
)
&
e &&
operatori. Questo codice set x=some & set y=%x%thing & echo results %y%
restituisce %x%thing
.
Sono un po 'in ritardo alla festa, ma un altro modo per affrontare questa condizione è continuare il processo all'esterno if
, in questo modo
set var1=true
if "%var1%"=="true" (
set var2=myvalue
)
echo %var2%
Oppure / e usa la goto
sintassi
set var1=true
if "%var1%"=="true" (
set var2=myvalue
goto line10
) else (
goto line20
)
. . . . .
:line10
echo %var2%
. . . . .
:line20
In questo modo l'espansione avviene "nel tempo" e non serve setlocal EnableDelayedExpansion
. In conclusione, se ripensi il design del tuo script puoi farlo in questo modo
echo off set var1=true if "%var1%"=="true" ( set var2=myvalue ) echo %var2% pause
.. e funziona. "se creerai una variabile nel file batch a cui è possibile accedere ovunque nel programma." . aticleworld.com/batch-file-variables-and-scope