Код, приведенный ниже, является выдержкой из файла vcvarsall.bat
, используемого для , для переменных среды Visual C++. Из-за ошибок (упомянутых в коде как операторы REM) переменные среды не установлены.CALL с пробелами и скобками в пути
:x86
if exist "%~dp0bin" echo "%~dp0bin exists"
REM The above line gives "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin exists" as output.
if not exist "%~dp0bin\vcvars32.bat" goto missing
call "%~dp0bin\vcvars32.bat"
REM The above line gives 'C:\Program' is not recognized as an internal or external command as output.
goto :SetVisualStudioVersion
Поскольку переменные среды не установлены, я столкнулся с ошибками во время выполнения проекта nmake.
Я прошел через этот SO question и этот post, но обходные пути не помогли.
Может ли кто-нибудь предложить обходной путь для вызова call
с пробелами и скобками в пути?
Edit:
я поставил тест echo
заявление в начале файла vcvars32.bat, который будет вызван. Если бы файл был запущен, этот оператор должен был быть выполнен с инструкцией, напечатанной на экране. Более того, я уверен, что поток программы проходит через блок с пометкой :x86
, потому что выполняются теги тестового эха, которые помещаются туда.
Edit 2: После выполнения предложения от Paul & Co, изменил нормальную set
команды расширенного синтаксиса, который с кавычками. На запуск vcvars32.bat Казнь останавливается на следующих строках:
@if not "%WindowsSDK_ExecutablePath_x86%" == "" (
@set "PATH=%WindowsSDK_ExecutablePath_x86%;%PATH%"
)
ошибка показана:
\Microsoft was unexpected at this time.
На самом деле, здесь я не вижу никакой ошибки, ваш код выглядит хорошо, поскольку есть кавычки вокруг путей, содержащих пробелы, и '()'; так что вы абсолютно уверены, что ошибка вызвана линией, которую вы подозреваете? – aschipfl
Кажется, что ваша проблема не в вызове 'vcvars32.bat', а в коде внутри вызываемого файла. –
@MCND: Спасибо за этот совет. Позвольте мне проверить, что – sjsam