批处理文件中的括号

Parenthesis in Batch file

set var= 10(device)
if 1==1 (
echo %var% present
)

由于 "device" 后的括号,此批处理文件出错。

如何解决?

您需要 enabledelayedexpansion 并在延迟样式中执行 echo !var! present 以防止在回显时计算括号。

@echo off
setlocal enabledelayedexpansion

set "var= 10(device)"
if 1==1 (
    echo !var! present
)

与您的问题没有直接关系,但我认为无论如何都是好的建议,每当您批量设置 variable=string 时,将 var=val 对用引号引起来,如下所示:

set "var= 10(device)"

在批处理脚本中设置 variable=string 时,这通常被认为是正确的做法。此方法也允许使用其他特殊字符,例如:

set "xml=<device>10</device>"
setlocal enabledelayedexpansion
echo !xml!