包含嵌套if块中的括号的变量的批处理文件

时间:2013-02-12 21:48:29

标签: batch-file cmd

我有一个.cmd文件(Windows XP)正在使用这样的多行IF块:

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命令块中的右括号并产生错误:

此时出乎意料。

这有什么办法吗?我怎样才能确保将)视为字符串的一部分,而不是命令块的一部分?

1 个答案:

答案 0 :(得分:1)

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

if not "%SUMN%"==""

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