下面给出的代码是vcvarsall.bat
文件的摘录
为Visual C ++命令行设置环境变量。
由于错误(在代码中提到为REM语句),未设置环境变量。
: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
的解决方法吗?
修改
我在正在调用的vcvars32.bat文件的开头放置了一个test echo
语句。如果文件已运行,则应使用屏幕上打印的语句执行此语句。此外,我确信程序流是通过标记为:x86
的块,因为放在那里的测试回显语句已经运行。
编辑2:
遵循Paul& amp; Co,将正常set
命令更改为带引号的扩展语法。
在运行vcvars32.bat时,执行将在以下行停止:
@if not "%WindowsSDK_ExecutablePath_x86%" == "" (
@set "PATH=%WindowsSDK_ExecutablePath_x86%;%PATH%"
)
显示的错误是:
\Microsoft was unexpected at this time.
答案 0 :(得分:1)
在@Jeb的帮助下,我可以使用。来解决此错误 低于vcvars32.bat中的调整。
我添加了
@set PATHTEMP=%PATH%
@set PATH=%PATHTEMP:"=%
之前
@if not "%WindowsSDK_ExecutablePath_x86%" == "" (
@set "PATH=%WindowsSDK_ExecutablePath_x86%;%PATH%"
)
基本上我只是从PATH变量中删除了引号。
(感谢@jeb提出宝贵的建议)。
答案 1 :(得分:0)
:x86
if exist "%~dp0bin\nul" (
rem this IF statement is useless since you are going to check if vcvars32.bat exist
echo "%~dp0bin exists"
)
set "_MVS=%ProgramFiles(x86)%\Microsoft Visual Studio 12.0\VC\bin"
if not exist "%_MVS%\vcvars32.bat" (
echo "%_MVS%\vcvars32.bat" is missing
echo please fix it and retry again.
exit /b 0
)
call "%~dp0bin\vcvars32.bat"
我在\nul
中添加了if exist "%~dp0bin\nul"
来区分文件和文件夹。