Пробелы и Круглая скобка в переменной окон PATH завинчивают пакетные файлы

Так, моя переменная пути (Система-> Рекламные Настройки-> ENV Вар-> Система-> ПУТЬ) установлена на:

C:\Python26\Lib\site-packages\PyQt4\bin;
%SystemRoot%\system32;
%SystemRoot%;
%SystemRoot%\System32\Wbem;
%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;
C:\Python26\;
C:\Python26\Scripts\;
C:\cygwin\bin;
"C:\PathWithSpaces\What_is_this_bullshit";
"C:\PathWithSpaces 1.5\What_is_this_bullshit_1.5";
"C:\PathWithSpaces (2.0)\What_is_this_bullshit_2.0";
"C:\Program Files (x86)\IronPython 2.6";
"C:\Program Files (x86)\Subversion\bin";
"C:\Program Files (x86)\Git\cmd";
"C:\Program Files (x86)\PuTTY";
"C:\Program Files (x86)\Mercurial";
Z:\droid\android-sdk-windows\tools;

Хотя, очевидно, без новых строк.

Заметьте строки, содержащие PathWithSpaces - первое не имеет никаких пробелов, второе имеет пространство, и третьему следовала за пространством круглая скобка.

Теперь, заметьте вывод этого пакетного файла:

C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\>vcvars32.bat
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin>"C:\Program Files (x86
)\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat"
Setting environment for using Microsoft Visual Studio 2008 x86 tools.
\What_is_this_bullshit_2.0";"C:\Program was unexpected at this time.
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin>      set "PATH=C:\Pro
gram Files\Microsoft SDKs\Windows\v6.0A\bin;C:\Python26\Lib\site-packages\PyQt4\
bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\
WindowsPowerShell\v1.0\;C:\Python26\;C:\Python26\Scripts\;C:\cygwin\bin;"C:\Path
WithSpaces\What_is_this_bullshit";"C:\PathWithSpaces 1.5\What_is_this_bullshit_1
.5";"C:\PathWithSpaces (2.0)\What_is_this_bullshit_2.0";"C:\Program Files (x86)\
IronPython 2.6";"C:\Program Files (x86)\Subversion\bin";"C:\Program Files (x86)\
Git\cmd";"C:\Program Files (x86)\PuTTY";"C:\Program Files (x86)\Mercurial";Z:\dr
oid\android-sdk-windows\tools;"

или конкретно строка:

\What_is_this_bullshit_2.0";"C:\Program was unexpected at this time.

Так, какова эта ерунда?

Конкретно:

  • Каталог в пути, которого правильно оставляют с кавычками, но без пробелов = прекрасный
  • Каталог в пути, которого правильно оставляют с кавычками и имеет пробелы, но никакую круглую скобку = прекрасный
  • Каталог в пути, которого правильно оставляют с кавычками и имеет пробелы и имеет круглую скобку = ОШИБКА

Что продолжается здесь? Как я могу зафиксировать это? Я, вероятно, обращусь к точке соединения, чтобы позволить моим инструментам все еще работать обходным решением, но если у Вас есть понимание этого, сообщите мне :)

14
задан 11.12.2015, 10:09

1 ответ

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

Можно обычно фиксировать его путем включения задержанного расширения и использовать переменные с !var! вместо %var%. Нет намного большего совета, который я мог дать, не видя код.

13
ответ дан 07.12.2019, 11:11

Теги

Похожие вопросы