Answers:
设置了var2,但是行的扩展echo %var2%
发生在执行该块之前。
这时var2
是空的。
因此,存在delayExpansion语法,它使用!
代替,%
并且在执行时而不是解析时进行评估。
请注意,为了使用!
,setlocal EnableDelayedExpansion
需要附加的语句。
setlocal EnableDelayedExpansion
set var1=true
if "%var1%"=="true" (
set var2=myvalue
echo !var2!
)
&
和&&
运算符相同的规则。此代码set x=some & set y=%x%thing & echo results %y%
输出%x%thing
。
我参加聚会有点晚了,但是处理这种情况的另一种方法是继续在外面进行程序if
,像这样
set var1=true
if "%var1%"=="true" (
set var2=myvalue
)
echo %var2%
或/和使用goto
语法
set var1=true
if "%var1%"=="true" (
set var2=myvalue
goto line10
) else (
goto line20
)
. . . . .
:line10
echo %var2%
. . . . .
:line20
这种扩展“及时”发生,您不需要setlocal EnableDelayedExpansion
。最重要的是,如果您重新考虑脚本的设计,则可以这样做
echo off set var1=true if "%var1%"=="true" ( set var2=myvalue ) echo %var2% pause
..并且正在运行。“如果要在批处理文件中创建一个变量,则可以在程序中的任何位置访问它。” 。 aticleworld.com/batch-file-variables-and-scope