2015-10-18 21 views
1
C:\WINDOWS\system32>SetLocal EnableDelayedExpansion 
C:\WINDOWS\system32>set/a Number1=3+9 
12 
C:\WINDOWS\system32>if !Number1!==9+3 (echo Good) else (echo Bad) 
Bad 
C:\WINDOWS\system32>if !Number1!==3+9 (echo Good) else (echo Bad) 
Bad 
C:\WINDOWS\system32>set/a i=9+3 
12 
C:\WINDOWS\system32>if !Number1!==%i% (echo Good) else (echo Bad) 
Bad 

我期望看到最後的結果(也許有些人),顯示Good作爲一個結果,但都沒有!我認爲這是因爲它與SetLocal EnableDelayedExpansion錯誤,但我需要在我的代碼中。那麼如何通過SetLocal EnableDelayedExpansion獲得我的預期結果。感謝您提供任何幫助=)批SETLOCAL EnableDelayedExpansion和數學問題

+1

你鍵入命令提示符下所有的線?在這種情況下,'setlocal EnableDelayedExpansion'沒有效果,因此'!!'擴展將不起作用;你需要打開一個新的'cmd'實例來啓用延遲擴展:'cmd/V:ON' – aschipfl

+0

另外,你應該使用比較運算符'EQU'進行數值運算,因爲'=='forces * string * comparison .. – aschipfl

+0

是的,我在命令提示符下輸入了所有這些信息。是的,我在批處理文件中試過之後,它工作正常!我也會嘗試使用EQU。謝謝:) :) :) – Gerrardio

回答

2

setlocal EnableDelayedExpansion只適用於批處理文件(另請參閱setlocal /?),它在鍵入命令提示符時不起作用;因此!!擴展不起作用。

要使用命令提示符延遲擴展,你需要打開一個新的cmd實例:

cmd /V:ON 

你不能這樣做直接在if語句的比較表達式算術,你需要做的一切提前計算。
此外,你應該使用比較運算EQU用於數字操作,因爲==軍隊字符串比較:

set /A Number1=3+9 
set /A i=9+3 
if !Number1! EQU %i% (echo Good) else (echo Bad) 
+1

「== ==強制字符串比較」是什麼意思?數字比較只有比較大/小的意義。如果兩個值是相同/不同的,如果他們被當作數字或字符串就沒關係! – Aacini

+0

我同意,'=='和'EQU'給出相同的結果;我只是想指出,他們不完全一樣...... – aschipfl

+0

對不起。如果'=='和'EQU'不完全相同,那究竟有什麼不同?你可以發佈任何代碼來顯示這種差異嗎? – Aacini