括號混亂

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