Portanto, minha variável de caminho (Sistema-> Configurações Avançadas-> Env Vars-> Sistema-> PATH) está definida como:
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;
Embora, obviamente, sem as novas linhas.
Observe as linhas que contêm PathWithSpaces
- a primeira não possui espaços, a segunda possui um espaço e a terceira possui um espaço seguido por parênteses.
Agora, observe a saída deste arquivo em lotes:
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;"
ou especificamente a linha:
\What_is_this_bullshit_2.0";"C:\Program was unexpected at this time.
Então, o que é essa besteira?
Especificamente:
- Diretório no caminho que é escapado corretamente entre aspas, mas sem espaços = fino
- Diretório no caminho que é escapado corretamente entre aspas e possui espaços, mas sem parênteses = fino
- Diretório no caminho que é escapado corretamente entre aspas e possui espaços e parênteses = ERRO
O que está acontecendo aqui? Como posso consertar isso? Provavelmente vou recorrer a um ponto de junção para permitir que minhas ferramentas ainda funcionem como solução alternativa, mas se você tiver alguma idéia, informe-me :)