擅长:python、mysql、java
<p>如果从PowerShell(批处理文件)运行<code>cmd.exe</code>shell脚本,PowerShell将生成<code>cmd.exe</code>的实例来运行脚本(批处理文件)。如果批处理文件设置环境变量,则它们只存在于生成的<code>cmd.exe</code>实例中。在这种情况下,调用PowerShell的过程结束(在这种情况下,调用PowerShell的过程终止一次)。这是故意的。在</p>
<p>如果要传播环境变量,可以在PowerShell中使用以下<code>Invoke-CmdScript</code>函数:</p>
<pre><code>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
}
}
</code></pre>
<p>以下文章提供了有关此方面的更多信息:</p>
<p><a href="http://windowsitpro.com/powershell/take-charge-environment-variables-powershell" rel="nofollow">Windows IT Pro: Take Charge of Environment Variables in PowerShell</a></p>
<p>在您的情况下,您将运行:</p>
^{pr2}$
<p>这将生成<code>activate.bat</code>并传播环境变量更改。在</p>