gpt4 book ai didi

windows - 在更改为cmd后的powershell中无法通过批处理脚本文件调用bat文件

转载 作者:可可西里 更新时间:2023-11-01 11:24:38 24 4
gpt4 key购买 nike

我创建了一个 bat 文件来设置我的工作区,方法是将目录更改为工作区目录并调用 setupEnv.bat 文件。但是当我在 PowerShell 中执行下面的 bat 文件时,cmd 之后的指令没有执行。我需要在 cmd 中调用 setupEnv.bat 文件。如果我删除 cmd 它将正常工作。但我想在 cmd 上调用 setupEnv.bat,而不是在 PowerShell 中。

D:
cd D:\WorkSpace\
cmd
call setupEnv.bat
echo "Setup Completed"
  • 在调用setupEnv.bat 和调用cmd 后,它会保留PowerShell 中设置的所有环境变量吗?

最佳答案

本文针对您的确切场景:

Windows IT Pro - Take Charge of Environment Variables in PowerShell

变量消失的原因是 .bat.cmd 在单独的 cmd.exe 进程中运行(当进程终止时,你失去了变量)。

本文介绍了一个 PowerShell 函数,您可以使用它来运行 .bat.cmd 脚本并保留其设置的环境变量:

# 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 中设置和恢复环境变量值的函数。

关于windows - 在更改为cmd后的powershell中无法通过批处理脚本文件调用bat文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42711294/

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