Windows 终端不通过脚本更改目录

Windows Terminal not changing directory via script

我有文件 assist.cmd,它在我的 %path% 中,内容为

pushd m:\Documents\Code\assist

当我在 windows 终端(新终端)上键入 assist 时,我得到:

PS C:\Users\User> assist

C:\Users\User>pushd m:\Documents\Code\assist
PS C:\Users\User>

当我自己复制 pushd 命令时,它可以工作,但从脚本中使用时却不行。

有什么想法吗?

启动 BAT 脚本时 "assist.cmd" 会启动一个新的子进程 "cmd.exe"。命令处理器执行 BAT 脚本,并且实际上更改了该进程的当前工作目录。 BAT脚本完成后进程终止。

子进程的当前工作目录不会改变PowerShell进程的工作目录。这就是 .cmd 脚本无法用于执行预期帮助的原因。

您可以使用包含 Push-Location 或其别名 pushd 的 PowerShell 脚本 "assist.ps1" 并使用 dot sourcing 语法调用它

. assist.ps1

此外,当 运行 一个 .cmd 文件时,你是 运行 cmd 自带的 pushd,而不是 pushd powershell 命令。 https://blog.brainasoft.com/all-internal-commands-of-cmd/