Fichier de commandes variable avec les espaces et les parenthèses

J'ai lu de nombreux threads sur les différentes approches pour obtenir le fichier de commandes windows analyseur de traiter correctement les variables qui ont les espaces et les parenthèses, et d'autres caractères spéciaux, mais aucune des recommandations semble être en mesure de résoudre le problème que j'ai.

Voici le script (avant d'essayer toutes les solutions de contournement), dont l'objectif est de définir une valeur pour variable03 basé sur les valeurs trouvées pour variable01 et variable02:

set variable01="C:\Program Files (x86)\SomeProgram\Subfolder"
set variable02="${macro}"

set variable01=%variable01:"=%
set variable02=%variable02:"=%

set variable03=""

if %variable02:~0,1%==$ (
   if %variable01:~0,1%==$ (
      set variable03=%variable03:"=%
   ) else (
      set variable03=-o '%variable01%'
   )
)

...les valeurs de variable01 et variable02 ne sont pas connus à l'avance - ils sont remplacés par un autre programme avant d'exécuter le script, de sorte que le script ci-dessus montre un exemple de valeurs pour variable01 et variable02 après que la substitution a été faite.

L'erreur que j'obtiens lorsque ce script s'exécute est:

\SomeProgram\Subfolder' was unexpected at this time.

...ce qui correspond à la dernière 'set' ligne dans le script ci-dessus. Je suppose que cette erreur était due à l'parenthèses dans la valeur de variable01.

Si je change cette ligne:

set "variable03=-o '%variable01%'"

...puis j'ai cette erreur:

Files was unexpected at this time.

...ce qui semble indiquer qu'il est en train de marquer sur les espaces de variable01, et l'analyseur est toujours pas satisfait.

Si je puis ajoutez cette ligne au début du script:

 setlocal enableextensions enableDelayedExpansion

...et variation %variable01% à !variable01!, J'obtiens toujours la même erreur.

Clairement, je ne comprends pas ce que le fichier de commandes de l'analyseur doit répondre à mon exigence que la valeur de variable03 a la valeur suivante:

-o 'C:\Program Files (x86)\SomeProgram\Subfolder'

...des suggestions?

OriginalL'auteur Hoobajoob | 2013-02-25