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 enableddelayedexpansion を設定します。

于 2013-02-12T22:22:39.313 に答える