2012-02-01 29 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