0

我有一个使用多行 IF 块的 .cmd 文件(Windows XP),如下所示:

IF DEFINED SUMM (
    echo  %SUMM% >> %OutFile%
    echo  ---- >> %OutFile%
) ELSE (
    echo  No summary >> %OutFile%
)

如果环境变量 %SUMM% 包含右括号,然后是文本,则会出现问题。例如:

SET SUMM=(Hello world) Here's some more text.

然后我假设 SUMM 中的 ')' 被视为 IF 命令块中的右括号并生成错误:

这是在这个时候出乎意料的。

有没有办法解决?如何确保 ) 被视为字符串的一部分,而不是命令块的一部分?

4

1 回答 1

1

除非您可以延迟 SUMN 的扩展,否则它将评估 SUMN 的内容。所以我不认为 if defined 的语法会允许你想要什么。你最好的选择可能是

if not "%SUMN%"==""

...如果您知道 %SUMN% 不会包含引号。如果可以,则将百分比更改为感叹号并设置local enabledelayedexpansion。

于 2013-02-12T22:22:39.313 回答