2012-02-01 50 views
55

当我运行此脚本(从.bat文件):Windows批处理中集如果不工作

set var1=true 
if "%var1%"=="true" (
    set var2=myvalue 
    echo %var2% 
) 

我总是得到:

​​

含义var2变量是不是真的组。 任何人都可以请帮我理解为什么?

回答

103

设置了var2,但行echo %var2%的扩展发生在块执行之前。
目前var2为空。

因此,存在delayedExpansion语法,它使用!而不是%,它在执行时评估,而不是解析时间。

setlocal EnableDelayedExpansion 
set var1=true 
if "%var1%"=="true" (
    set var2=myvalue 
    echo !var2! 
) 
+5

谢谢你只是幸免我一个巨大的痛苦。 – Myna 2013-03-15 21:32:14

+14

Friggin的批处理脚本! – 2016-07-20 00:46:46

+0

muito obrigado“” – durtto 2017-10-25 19:49:09