windows - 批处理文件中的 VC++ SetEnv.cmd

标签 windows visual-c++ batch-file cmd setenv

我想做一个调用 setenv.cmd 的批处理文件,然后继续执行其他一些命令,例如:

%COMSPEC% /E:ON /V:ON /K "%PROGRAMFILES%\Microsoft SDKs\Windows\v7.0\Bin\SetEnv.cmd"

setenv /Release /x86
set DISTUTILS_USE_SDK=1
set MSSdk=1
python setup.py build

不幸的是,批处理在第一行之后停止,因为它调用了一些接近于新的 cmd.exe 的东西。 我也试过

call "%PROGRAMFILES%\Microsoft SDKs\Windows\v7.0\Bin\SetEnv.cmd /Release /x86

但是,不成功:执行此 setenv.cmd 后初始批处理仍然停止。

调用 setenv.cmd 并继续批处理的正确方法是什么?

最佳答案

使用 call 在当前上下文中运行批处理脚本 - 即让任何环境变量在父上下文中设置它们的值。即:

@call "%VSCOMNTOOLS%\SetEnv.cmd"

编辑

这是我在我们的一个构建脚本中实际设置编译器环境的方式。我们有一段代码将 PF 设置为当前系统的 32 位程序文件路径。然后调用vcvars32.bat配置编译环境。如果 SetEnv.cmd 不适合您,使用 vcvars 可能没问题。

@rem Note: can use @call "%VS120COMNTOOLS%\..\..\VC\bin\vcvars32.bat"
if "%VCINSTALLDIR%"=="" call "%PF%\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat"

关于windows - 批处理文件中的 VC++ SetEnv.cmd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22132141/

相关文章:

python - 制作 Python 批处理文件

c - setsockopt 不起作用,但不返回 errno

android - 我想为 ios、android、windows 和 blackberry 开发 2D 动画游戏

java - Titanium Studio - Java 返回错误 13

c++ - 无法在 vs2013 中为 C++ 使用 boost 库

batch-file - 在命令行中使用 7zip 解压缩文件夹中的所有文件

windows - 不能在 Octave Windows 上使用 awgn

visual-c++ - 如何在不重建的情况下触发 VS 构建后事件

c++ - 错误 C4592:符号将被动态初始化。 VS2015.1 静态常量 std::vector 字段

python - 使用 python 3 执行脚本的批处理脚本(如果可用),否则 python 2