0

有没有办法让 Run 或 Exec 在每次调用后保留环境变量?

例如,调用vcvars32进行大量路径配置以及其他任何操作:

shell.Run "vcvars32.bat", 0, True

然后我希望能够msbuild在这个配置的环境中调用:

shell.Run "msbuild.exe example.sln /t:Rebuild /p:Configuration=""Debug|Win32""", 0, True

这可能吗?

我能找到的唯一替代方法是使用这两个命令创建一个组合批处理脚本并调用它。但是,如果我每次都需要调用设置脚本,这似乎很浪费,将环境设置一次然后重用它会很棒。

4

2 回答 2

0

那么你可以把它作为一个函数?我不确定这是否能回答你的最后一个问题,但它会减少你需要记住的“东西”。我将 vcvars32.bat 放在同一个函数中,因为我不知道您是否需要它们在同一个函数中。

sub
funcmsbuild
end sub

Function funcmsbuild
shell.Run "vcvars32.bat", 0, True 
shell.Run "msbuild.exe example.sln /t:Rebuild /p:Configuration=""Debug|Win32""", 0, True
end function

或者您可以将所有环境变量放在一个字符串中并调用它?但这会令人困惑,因为您在那个“将是”字符串中有很多引号,并且它需要您按顺序使用三重和四重引号(除非您使用 chr(22) 我相信引号)

于 2013-05-03T13:29:03.490 回答
0

将对 vcvars32.bat 和 msbuild.exe 的调用放在一个批处理文件中。用于CALL调用 vcvars32.bat 将保留环境。将您的 SLN 和其他参数传递给批处理文件并使用 %1、%2、%3 等检索它们。如果需要,请记住在它们周围加上引号。

它不像将所有内容都放在一个 VBS 文件中那样干净,但它是最简单的方法。

于 2013-05-13T14:28:03.290 回答