应用程序崩溃后自动重新启动可执行文件

应用程序崩溃后自动重新启动可执行文件

我正在为一个必须全天候运行的信息亭创建一个独立的应用程序。

在极少数情况下,应用程序崩溃时,我需要某种方法让它自动重启。我在 Nuc 上运行 Windows 10。

有没有 Windows 专家可以建议实现此目的的最佳方法?

答案1

一种解决方案是使用带有无限循环的批处理文件,for在应用程序关闭时自动重新启动应用程序。这里有两种可能性,具体取决于应用程序的设计方式。

如果应用程序启动并在同一进程中运行,则可以使用一个非常简单的批处理文件:

@echo off
:Start
C:\path\to\application.exe
:: Wait 30 seconds before restarting.
TIMEOUT /T 30
GOTO:Start

这将无限运行。任何时候application.exe关闭或崩溃,批处理文件都会重新启动它。

这会不是application.exe如果启动subapp.exe然后关闭,则工作application.exe正常。在这种情况下,您需要更复杂的东西。

@ECHO off
SET _PollingInterval=30

:BatchStart
C:\path\to\application.exe

:Start
:: Uncomment the following line on versions of Windows prior to Windows 7 and comment out the TIMEOUT line. The PING solution will not be 100% accurate with _PolingInterval.
:: PING 127.0.0.1 -n %_PollingInterval% >nul
TIMEOUT /T %_PollingInterval%

SET PID=
FOR /F "tokens=2 delims= " %%i IN ('TASKLIST ^| FIND /i "subapp.exe"') DO SET PID=%%i
IF [%PID%]==[] (
    ECHO Application was not running. Restarting script.
    GOTO BatchStart
)
GOTO Start

GOTO:EOF

如果您的应用程序可以有各种进程,那么您可能可以使用类似的FINDSTR /i "subapp.exe application.exe"而不是FIND /i "subapp.exe",但这对名称中带有空格的进程不起作用,因为FINDSTR使用空格作为分隔符。

为了在启动这些批处理文件后停止它们,请保持应用程序打开并切换到命令提示符。然后使用Ctrl+C并确认您要结束脚本。脚本终止后,关闭应用程序。

进一步阅读:

相关内容