下面给出的代码是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
?
编辑:
我已经把测试echo
声明,其中被称为VCVARS32.BAT文件的开头。如果文件已经运行,则应该使用屏幕上显示的语句执行该语句。此外,我确定程序流程是通过标记为:x86
的块,因为放在那里的测试回声语句是运行的。
编辑2: 以下保罗&合作的建议后,改变了正常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