Попытка установить простой скрипт сборки, который расширит путь на основе других переменных среды. Этот небольшой скрипт работает отлично:Windows cmd shell: if-then-else weirdness для операторов блока
echo off
call c:\vstudio\vc\bin\vcvars32.bat
set _ISGIT=1
echo current path is %PATH%
if defined _ISGIT set PATH=c:\git\bin;%PATH%
Но если я хочу сделать выполнить несколько строк, основанные на существовании переменной _ISGIT, то я думал, что это будет работать
echo off
call c:\vstudio\vc\bin\vcvars32.bat
set _ISGIT=1
echo current path is %PATH%
if defined _ISGIT (
set PATH=c:\git\bin;%PATH%
set PATH=c:\foo;%PATH%
)
Но что дает следующий результат :
D:\>test.cmd
D:\>echo off
current path is C:\vstudio\Common7\IDE\CommonExtensions\Microsoft\TestWindow;C:\Program Files (x86)\MSBuild\14.0\bin;C:\
vstudio\Common7\IDE\;C:\vstudio\VC\BIN;C:\vstudio\Common7\Tools;C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319;C:\vstudio
\VC\VCPackages;C:\Program Files (x86)\HTML Help Workshop;C:\vstudio\Team Tools\Performance Tools;C:\Program Files (x86)\
Windows Kits\10\bin\x86;C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\;C:\ProgramData\Oracl
e\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\U
sers\jselbie\.dnx\bin;C:\Program Files\Microsoft DNX\Dnvm\;C:\Program Files (x86)\Windows Kits\10\Windows Performance To
olkit\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\nodejs\;C:\Program Files (x86)\Skype\Phone\;C:\WINDOWS\s
ystem32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\NVIDIA Co
rporation\PhysX\Common;C:\Users\jselbie\.dnx\bin;C:\Users\jselbie\AppData\Roaming\npm;%USERPROFILE%\AppData\Local\Micros
oft\WindowsApps;
MSBuild\14.0\bin was unexpected at this time.
MSBuild\14.0\bin was unexpected
, вероятно, побочный эффект от первоначального пути, содержащего каталог с пробелом. Наличие пробела в расширенной команде с ()
, похоже, отключает скрипт.
Как мне обойти это без необходимости иметь независимые заявления if defined
?
Однолинейным решение не работает - он должен быть «установлен» PATH = ... «' 'не' set PATH = "..." ' – selbie
вещь' enabledelayedexpansion' вообще не работает .. все еще пытается ... – selbie
@selbie благодарит за комментарий о кавычках. Это была опечатка, которую я сейчас исправил. Я не уверен, что отсроченное расширение не работает. Также потребовались исправления кавычек, может быть, это так? –