【问题标题】:Batch files: reboot after pause?批处理文件:暂停后重新启动?
【发布时间】:2026-01-24 11:40:02
【问题描述】:

如果批处理崩溃并且“暂停”命令行(按任意键继续...)被触发,我正在寻找重新启动系统的解决方案。

是否可以扫描线路(按任意键继续)并强制完全重启?这样的事情会奏效吗?

@echo off
TIMEOUT /T 20
AppWhichLikesToCrash.exe
pause
:loop
echo Press any key to continue...
shutdown -t 0 -r -f
goto loop

我找到了解决方案,但他们正在将批处理转换为服务,我不想这样做。

【问题讨论】:

  • 是什么阻止您将“暂停”命令更改为关机命令?
  • 您可以将命令的输出重定向到一个文件,然后单独的脚本可以读取该文件并find "Press any key to continue..."。
  • 大声笑这可能吗?您的意思是省略循环并用“shutdown -t 0 -r -f”替换暂停?我去检查 tasklist /im 并在任务消失时重新启动。这是针对 24/7 运行的应用程序,如果没有帮助,将报告。

标签: batch-file crash restart reboot


【解决方案1】:

当您的应用程序真的崩溃(=不再存在)时,以下应该可以工作:

@echo off
TIMEOUT /T 20
AppWhichLikesToCrash.exe
:loop
timeout /t 10
tasklist /im "AppWhichLikesToCrash.exe" && goto :loop
shutdown -t 0 -r -f

【讨论】:

  • 感谢您的帮助。 “崩溃”是指进程暂停但命令提示符仍处于打开状态。暂停被触发,“按任意键继续”出现,它不再运行。在这种情况下,我需要重新启动批处理,最简单的方法是强制重新启动(批处理位于 Windows 启动文件夹中)。我认为您的解决方案可以工作,我必须检查 .exe 是否真的崩溃了。谢谢!
  • 所以如果我理解正确,应用程序运行并且只有当它“崩溃”时,您的批处理文件才会到达pause 命令?
  • 是的,正确的。我已经在任务列表中添加了您的建议,如果它不再存在,请像推荐的那样强制重启
  • 当您的问题得到解决后,考虑accepting an answer 将问题从“未解决”队列中删除。
【解决方案2】:

您是否考虑过选择超时切换暂停? IE 如果应用程序有在启动时崩溃或在短时间内崩溃的习惯, 将选项设置为具有短暂延迟的默认设置,该默认设置将您发送回您希望从中重新启动的程序点 如果应用程序启动或运行超过某个点,您可以继续选择其他选项 您可以根据需要添加替代选项来终止应用程序或使用 /M "option here" 显示选项

CHOICE /T 30 /C cr /N /D r >nul
IF ERRORLEVEL ==2 GOTO restart
IF ERRORLEVEL ==1 GOTO continue

【讨论】: