gpt4 book ai didi

powershell - 使用 Powershell 脚本启动的批处理文件设置环境变量

转载 作者:行者123 更新时间:2023-12-02 22:29:05 28 4
gpt4 key购买 nike

我有一个名为 SET_ENV.bat 的批处理脚本,其中包含其他批处理脚本使用的环境变量。目前这个 SET_ENV.bat 由现有的批处理脚本启动。

现在我需要使用 Powershell 脚本,我想启动相同的 SET_ENV.bat。我设法做到这一点:

cmd.exe /c ..\..\SET_ENV.bat

我知道批处理文件已运行,因为它包含回显
echo *** Set the environment variables for the processes ***

但是查看环境变量后,我可以看到它们都没有更新。是否有什么阻止我使用 Powershell + 批处理文件组合更新环境变量?

我已经直接从命令行尝试了 SET_ENV.bat 并且它可以工作。我也尝试过使用“-Verb runAs”的 Start-Process cmdlet,但这没有任何好处。

最佳答案

在批处理命令结束时再次启动 PowerShell 将保留到目前为止的所有环境变量。

我的用例是:设置 Anaconda 环境,设置 MSVC 环境,然后继续。问题是 Anaconda 和 MSCV 都有一个单独的批处理脚本来初始化 env。

以下命令从 开始电源 将要:

  • 初始化 Anaconda
  • 初始化 MSVC
  • 重新启动 PowerShell
  • cmd.exe "/K" '%USERPROFILE%\apps\anaconda3\Scripts\activate.bat %USERPROFILE%\apps\anaconda3 && "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" && powershell'

    只需将路径与您需要的交换即可。请注意,如果路径包含空格,则需要在双引号内 " .

    分解上面的调用:
  • cmd.exe "/K" :调用cmd并且命令执行完毕后不要退出/K

  • 剩下的就是完整的命令,用单引号 ' .
  • %USERPROFILE%\apps\anaconda3\Scripts\activate.bat %USERPROFILE%\apps\anaconda3 : 调用activate.bat带参数...\anaconda3
  • && "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" : &&如果前面的命令没有失败,请运行 MSVC vars 设置文件。这包含在 " 中因为里面有空格。
  • && powershell : 最后运行 PowerShell。这现在将包含上述环境变量中的所有环境变量。


  • 只需添加一种更好的方法来进行上述设置:使用 Anaconda 的 PowerShell 初始化脚本来实际让它在提示符上显示环境名称。我不会分解它,因为它只是上面修改过的命令。
    cmd.exe "/K" '"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" && powershell -noexit -command "& ''~\apps\anaconda3\shell\condabin\conda-hook.ps1'' ; conda activate ''~\apps\anaconda3'' "'

    注意 powershell 中的单引号调用都加倍以逃避它们

    关于powershell - 使用 Powershell 脚本启动的批处理文件设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49027851/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com