Скобки в переменных внутри блоков IF
В одном из моих сценариев мне нужно использовать переменные, которые содержат скобки внутриIF
операторы, но либо в строке отсутствует закрывающая скобка, либо сценарий преждевременно завершает работу с* was unexpected at this time
(на самом деле не звездочка), в зависимости от сценария.
& # XA0;
Example
@echo off
SET path=%programFiles(x86)%
echo Perfect output: %path%
IF NOT "%path%" == "" (
REM Variable is defined
echo Broken output: %path%
)
pause >nul
Output
Perfect output: C:\Program Files (x86)
Broken output: C:\Program Files (x86
& # XA0;
Я думаю / знаю, что это потому, что он считает закрывающую скобку вC:\Program Files (x86)
это конецIF
заявление и оно выходит доecho
завершено.
Есть ли простой способ обойти это? Желательно не прибегая к
single-lineIF
statements, as I need to run more than one line of code within them,
copious amounts of GOTO
s, as it's not practical,
SETLOCAL EnableDelayedExpansion
and using !path!
instead of %path%
, as I recall reading somewhere that that method doesn't work consistently across OSs.
Если нет, я с радостью приму самое надежное предложенное решение, каким бы оно ни было.
& # XA0;
(Сценарий не подлежит обсуждению. Это просто уточненный, концентрированный пример проблемы. Структура должна быть такой, как в моем настоящем сценарии, по причинам, в которые я не буду вникать. Кроме того, это просто запутывает вещи и отвлекает от реальной проблемы.)