我正在尝试运行 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 建立的环境设置似乎不会保留用于构建脚本调用。即没有默认的编译器设置等。
Is the /v:on
结合/k
switch 实际上没有利用相同的 cmd 会话并正确延迟环境变量扩展?也许方法是错误的......
问题是当你跑步时cmd.exe
要运行批处理文件,变量在该实例中设置cmd.exe
,但它们在该实例终止后消失。
要解决此问题,您可以使用本文中的 Invoke-CmdScript 函数:
Windows IT 专业人士:负责 PowerShell 中的环境变量 http://windowsitpro.com/powershell/take-charge-environment-variables-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
...或者任何你需要的东西。
本文还介绍了几个可让您轻松保存和恢复环境变量的函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)