【问题标题】:Windows Terminal not changing directory via scriptWindows 终端不通过脚本更改目录
【发布时间】:2020-05-26 21:39:37
【问题描述】:

我有一个文件 assistant.cmd,它在我的 %path% 中,里面有内容

pushd m:\Documents\Code\assist

当我在 Windows 终端(新终端)上输入协助时,我得到:

PS C:\Users\User> assist

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

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

有什么想法吗?

【问题讨论】:

  • 为什么标记为PowerShell?与您未显示的脚本有关吗?
  • 我正在从新的 windows 终端使用 powershell

标签: powershell windows-terminal


【解决方案1】:

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

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

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

. assist.ps1

【讨论】:

    【解决方案2】:

    另外,在运行 .cmd 文件时,您运行的是 cmd 附带的 pushd,而不是 pushd powershell 命令。 https://blog.brainasoft.com/all-internal-commands-of-cmd/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-31
      • 2020-12-07
      • 2012-04-26
      • 2022-11-24
      • 2010-10-13
      • 2020-12-08
      相关资源
      最近更新 更多