括号混乱

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 /?,如果表达式中存在逻辑或模数运算符,则需要引号(尽管这不是必须执行的步骤)。