括號混亂
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 /?,如果表示式中存在邏輯或模數運算子,則需要引號(儘管這不是必須執行的步驟)。