PowerShell脚本捕获CTRL-C:让Django服务停止后脚本继续执行
PowerShell中捕获CTRL-C并让脚本继续执行的解决方案
完全可行,PowerShell默认会在按下CTRL-C时终止整个脚本,但通过try/finally代码块可以实现捕获中断、安全停止服务器后继续执行后续步骤的效果,和Bash的行为对齐。
具体实现思路:
- 将启动Django服务器的命令放在
try块中,当按下CTRL-C触发终止错误时,脚本会自动跳转到finally块 - 把退出虚拟环境、返回上级目录这类收尾操作统一放在
finally块里,无论服务器是正常退出还是被中断,finally块的代码都会执行
示例脚本片段:
# 前置步骤:创建venv、激活环境、安装依赖、执行迁移 python -m venv .venv .\.venv\Scripts\Activate.ps1 pip install -r requirements.txt python manage.py migrate try { # 启动Django开发服务器 python manage.py runserver } finally { # 收尾操作:退出虚拟环境、返回上级目录 Write-Host "正在清理环境..." deactivate Set-Location .. Write-Host "操作完成" }
需要注意的细节:
- PowerShell的
finally块会在任何情况下执行,包括脚本被CTRL-C中断的场景,这是实现需求的核心 - 如果脚本中有其他可能抛出错误的操作,也可以将其纳入
try块单独处理,但针对CTRL-C中断服务器的场景,上述写法已足够覆盖
内容的提问来源于stack exchange,提问作者Marco Frag Delle Monache
相关产品推荐
相关产品推荐

