关闭 powershell 脚本后如何重置当前目录

关闭 powershell 脚本后如何重置当前目录

我有一个用于运行 NPM 的批处理脚本,简化后如下所示:

cd ./subfolder
call npm run dev

然后在 Powershell 中启动它后,NPM 服务器正在运行。当我按两次 Ctrl+C 关闭它时,我的当前目录保持原样,这很好。但是,后来我需要在脚本中执行更复杂的任务,因此我将其更改为 Powershell 脚本,简化后如下所示:

Set-Location ./subfolder
npm run dev

但是现在,当我从 Powershell 运行它并关闭时,我的工作目录留在“子文件夹”,这真的很烦人!

有人知道如何解决它,以便 Powershell 脚本的行为与批处理文件相同吗?

编辑:我注意到,事实恰恰相反,如果我从命令提示符调用批处理脚本,那么当前目录也会保存在“子文件夹中”。

EDIT2:我尝试将其放在Set-Location ..最后。问题是,当我按 Ctrl+C 关闭 NPM(这是一个永无止境的过程)时,不仅 NPM 被关闭,而且 powershell 脚本也被关闭,因此永远不会到达最后一个命令。

答案1

作为 DavidPostill 建议的改进,您可以使用 PowerShell TRY/FINALLY 命令来正常终止脚本:

try
{
    pushd ./subfolder
    npm run dev
}
finally
{
    write-host "Ended work."
    popd
}

答案2

如何在 Powershell 脚本中恢复以前的目录?

使用pushd/Push-Locationpopd/ Pop-Location

pushd ./subfolder
npm run dev
popd

进一步阅读

来源

答案3

而不是在命令/PowerShell提示符内运行脚本:
./script.ps1

您可以在新提示中运行它:
pwsh ./script.ps1

这样,脚本就不会影响您正在执行命令的提示符。

相关内容