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 var2está 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 EnableDelayedExpansionse 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 gotosintaxis
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