括號混亂
OP 從這個網站上發現了一個問題。
原因
請考慮以下程式碼段。
if 1==1 (
    set /a result = 2*(3+4)
)
乍一看,你可能會認為 CMD.exe 會像這樣處理它:
- 條件為真,執行程式碼塊
- 將變數結果的值設定為 14
- 繼續
然而,CMD.exe 過程如下:
- 條件為真,執行程式碼塊
- 計算 2*(3+4,在if程式碼塊結束後處理 4 之後的)
- 一個隨機的 )出現了!
第二步將返回 Unbalanced parentheses 錯誤。
解
根據德國 CMD.exe 的 set /?,我們需要引用算術運算。這是一個例子。
| 以前 | 結果 | 
|---|---|
| set /a result=2+5*4 | set /a result="2+5*4" | 
順便說一下,根據英文 CMD.exe set /?,如果表示式中存在邏輯或模數運算子,則需要引號(儘管這不是必須執行的步驟)。