2013-05-26 19 views
2
@echo off 
pushd 

setlocal enabledelayedexpansion enableextensions 

set VARY=before 
if "!VARY!" == "before" (
set VARY=2  
if "!VARY!" == "2" @echo If you see this, yes echo !VARY! 
) 


set VAR=before 
if "!VAR!" == "before" (
set VAR=1 
if "!VAR!" == "1" @echo If you see this, it worked 
) 

popd 

預期輸出:
如果你看到這一點,是2
如果你看到這一點,它的工作不同的行爲在2個相同的代碼在批處理腳本變量延遲擴展

實際輸出:
如果你看到這個,它的工作

有人可以解釋爲什麼輸出不顯示「如果你看到這個,是的2」以及?

回答

1

您在2之後有尾隨空格,所以比較if "2 " == "2"(不等於)。

爲了避免這種情況使用下面的代碼:

set "VARY=before" 
if "!VARY!" == "before" (
set "VARY=2" 
if "!VARY!"=="2" echo If you see this, yes echo !VARY! 
)

..如果你設置的數字,你也可以使用 「設置/ A」:

 
set "VARY=before" 
if "!VARY!" == "before" (
set /a VARY=2 
if "!VARY!"=="2" echo If you see this, yes echo !VARY! 
) 
+0

非常感謝。愚蠢的我沒有注意到空白處。 –

1

很簡單。您第一次將VARY設置爲2而不是2

爲了避免這種情況總是使用語法set "VARY=2"

這句法只需從第一個到最後一個引號輸入,最後一個引號之後的所有字符都將被丟棄。

相關問題