2013-02-12 2 views
0

у меня есть 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

Если вы не можете отложить расширение СУММЫ, он будет оценивать содержимое СУММЫ. Поэтому я не думаю, что синтаксис, если он определен, позволит вам что угодно. Лучше может быть что-то вроде

if not "%SUMN%"=="" 

... если вы знаете, что% SUMN% не будет содержать кавычки. Если бы это было возможно, измените проценты на восклицательные знаки и setlocal enabledelayedexpansion.

+0

Моя переменная может содержать кавычки или другие специальные символы, поэтому мне нужно это обработать. Я включил задержку расширения и переключился на! СУММ! вместо% SUMM%, и это сделало трюк! Благодаря! – user2066241

Смежные вопросы