我试图运行Visual Studio(开发人员cmd提示符)环境变量安装批处理文件,然后从Powershell脚本中运行生成脚本,如下所示:
cmd /v:on/k "(""C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"" amd64_x86 && C:\buildscript.cmd --build-options)"
但是,似乎vcvarsall.bat建立的环境设置并未保留给构建脚本调用。即没有默认的编译器设置,等等。
/v:on
与/k
交换机结合使用时,实际上是否没有利用相同的cmd会话并适当延迟了环境变量的扩展?也许这种方法是错误的...
问题在于,当您运行cmd.exe
运行批处理文件时,变量是在的实例中设置的cmd.exe
,但是在该实例终止后它们会消失。
要变通解决此问题,您可以在本文中使用Invoke-CmdScript函数:
Windows IT Pro:在PowerShell中负责环境变量
功能如下:
# Invokes a Cmd.exe shell script and updates the environment.
function Invoke-CmdScript {
param(
[String] $scriptName
)
$cmdLine = """$scriptName"" $args & set"
& $Env:SystemRoot\system32\cmd.exe /c $cmdLine |
select-string '^([^=]*)=(.*)$' | foreach-object {
$varName = $_.Matches[0].Groups[1].Value
$varValue = $_.Matches[0].Groups[2].Value
set-item Env:$varName $varValue
}
}
您可以将此功能添加到PowerShell配置文件中,或将其用作脚本文件。
定义函数后,即可运行命令:
Invoke-CmdScript "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64_x86
C:\buildscript.cmd --build-options
...或您需要的任何东西。
本文还介绍了几个函数,可让您轻松保存和还原环境变量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句