Скобки в переменных внутри блоков 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-line IF statements, as I need to run more than one line of code within them, copious amounts of GOTOs, 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;

(Сценарий не подлежит обсуждению. Это просто уточненный, концентрированный пример проблемы. Структура должна быть такой, как в моем настоящем сценарии, по причинам, в которые я не буду вникать. Кроме того, это просто запутывает вещи и отвлекает от реальной проблемы.)

Ответы на вопрос(4)

Ваш ответ на вопрос