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/
我有文件 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/