Parêntese em variáveis ​​dentro de blocos IF

Em um dos meus scripts, eu preciso usar variáveis ​​que contenham parênteses dentroIF instruções, mas ou a cadeia está faltando um parêntese de fechamento ou o script sai prematuramente com* was unexpected at this time (na verdade não é um asterisco), dependendo do cenário.

 

Exemplo

@echo off

SET path=%programFiles(x86)%
echo Perfect output: %path%
IF NOT "%path%" ==  "" (
    REM Variable is defined
    echo Broken output:  %path%
)

pause >nul

Saída

Perfect output: C:\Program Files (x86)
Broken output:  C:\Program Files (x86

 

Eu acho / sei que isso é porque acha que o parêntese de fechamentoC:\Program Files (x86) é o fim doIF declaração e sai antes daecho está completo.

Existe uma maneira simples de contornar isso? De preferência sem recorrer a

única linhaIF declarações, como eu preciso executar mais de uma linha de código dentro deles,quantidades copiosas deGOTOs, como não é prático,SETLOCAL EnableDelayedExpansion e usando!path! ao invés de%path%, pelo que me lembro de ler em algum lugar que esse método não funciona de forma consistente em todos os sistemas operacionais.

Caso contrário, aceitarei com alegria a solução mais confiável oferecida, seja ela qual for.

 

(O cenário não está em debate. Este é apenas um exemplo refinado e concentrado do problema. A estrutura precisa ser assim, como está no meu roteiro real, por razões que não vou abordar. ponto e vai apenas confundir as coisas e distrair a questão real.)

questionAnswers(4)

yourAnswerToTheQuestion