Respuestas:
var2 está establecido, pero la expansión en la línea echo %var2%
ocurre antes de que se ejecute el bloque.
En este momento var2
está vacío.
Por lo tanto, existe la sintaxis delayedExpansion, se usa en !
lugar de %
y se evalúa en el tiempo de ejecución, no en el tiempo de análisis.
Tenga en cuenta que para usar !
, setlocal EnableDelayedExpansion
se necesita la declaración adicional .
setlocal EnableDelayedExpansion
set var1=true
if "%var1%"=="true" (
set var2=myvalue
echo !var2!
)
&
y &&
operadores. Este código set x=some & set y=%x%thing & echo results %y%
genera %x%thing
.
Llego un poco tarde a la fiesta, pero otra forma de lidiar con esta condición es continuar el proceso afuera if
, así
set var1=true
if "%var1%"=="true" (
set var2=myvalue
)
echo %var2%
O / y usa la goto
sintaxis
set var1=true
if "%var1%"=="true" (
set var2=myvalue
goto line10
) else (
goto line20
)
. . . . .
:line10
echo %var2%
. . . . .
:line20
De esta manera, la expansión se produce "en el tiempo" y no es necesario setlocal EnableDelayedExpansion
. En pocas palabras, si reconsideras el diseño de tu guión, puedes hacerlo así.
echo off set var1=true if "%var1%"=="true" ( set var2=myvalue ) echo %var2% pause
... y está funcionando. "si va a crear una variable en el archivo por lotes a la que se pueda acceder desde cualquier parte del programa". . aticleworld.com/batch-file-variables-and-scope