如果不工作,Windows 批处理 SET 内部 [英] windows batch SET inside IF not working
问题描述
当我运行这个脚本时(从 .bat 文件):
when I'm running this script (from a .bat file):
set var1=true
if "%var1%"=="true" (
set var2=myvalue
echo %var2%
)
我总是得到:
ECHO is on.
意味着 var2
变量并未真正设置.谁能帮我理解为什么?
Meaning the var2
variable was not really set.
Can anyone please help me understand why?
推荐答案
var2 已设置,但行 echo %var2%
中的扩展发生在块执行之前.
此时var2
为空.
var2 is set, but the expansion in the line echo %var2%
occurs before the block is executed.
At this time var2
is empty.
因此存在delayedExpansion 语法,它使用!
而不是%
并且在执行时而不是解析时进行评估.
Therefore the delayedExpansion syntax exists, it uses !
instead of %
and it is evaluated at execution time, not parse time.
请注意,为了使用!
,需要附加语句setlocal EnableDelayedExpansion
.
Please note that in order to use !
, the additional statement setlocal EnableDelayedExpansion
is needed.
setlocal EnableDelayedExpansion
set var1=true
if "%var1%"=="true" (
set var2=myvalue
echo !var2!
)
这篇关于如果不工作,Windows 批处理 SET 内部的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!