You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell脚本启动程序按Ctrl+C中断后未执行后续命令问题咨询

现象说明

你观察到的行为是PowerShell的默认设计机制:按下Ctrl+C触发终止请求时,PowerShell会立刻中断当前处于运行阻塞状态的命令(本场景中即启动DynamoDBLocal的java命令),默认不会顺延执行该命令之后的脚本语句,因此末尾的路径还原命令无法触发。

解决方法

不需要修改PowerShell全局配置,直接在脚本中使用try/finally语句块即可保证清理逻辑稳定执行:finally块的代码不受脚本正常退出、Ctrl+C中断、运行报错的影响,始终会被强制执行。

修改后的完整脚本如下:

$originalPath=pwd
D:\code\ps1\misc\title.ps1 "dynamo db"

$CURPATH = "$PSScriptRoot\path.txt"
$DB_DIR= Get-Content $CURPATH

try {
    cd $DB_DIR
    java -D"java.library.path=./DynamoDBLocal_lib" -jar DynamoDBLocal.jar
}
finally {
    # 工作路径还原逻辑放在此处,中断时也会正常执行
    cd $originalPath
}

如果需要实现Java进程本身的优雅退出(比如保证DynamoDBLocal把内存数据落盘后再终止),可以额外在脚本中捕获Ctrl+C信号后主动向Java进程发送温和终止指令,等进程退出后再走finally块的清理逻辑,对于当前还原工作路径的需求,上述try/finally写法已经完全满足要求。


内容的提问来源于stack exchange,提问作者deostroll

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 22:57:26