关闭时自动重启应用程序

Sid*_*Sid 10 windows automation batch windows-xp process-monitoring

我有一个服务器应用程序,我想在计算机运行时运行它,通常情况就是这样,除非有时我会发现它自己关闭了。

是否有我可以运行的 bat 或脚本来监视应用程序并在它关闭时重新启动它?

sgm*_*ore 12

这并不总是有效(这有点取决于程序如何加载自身),但通常您可以创建一个这样的批处理文件:

@Echo off
:Start
NotePad
echo Program terminated at %Date% %Time% with Error %ErrorLevel% >> c:\logs\program.log 
echo Press Ctrl-C if you don't want to restart automatically
ping -n 10 localhost

goto Start
Run Code Online (Sandbox Code Playgroud)

我以记事本为例。

线条

echo Press Ctrl-C if you don't want to restart automatically
ping -n 10 localhost
Run Code Online (Sandbox Code Playgroud)

只是一个延迟(10 秒),让用户有机会在它再次启动之前中止该过程。

线

echo Program terminated at %Date% %Time% with Error %ErrorLevel% >> c:\logs\program.log 
Run Code Online (Sandbox Code Playgroud)

不需要,但每次程序关闭时都会记录到文件中,因此诊断问题可能很有用 ErrorLevel 可能不会告诉您太多信息,但是如果程序正常关闭,则应该返回 0,而一个非-如果没有,则为零消息

请注意,您提到您的程序如果已经运行则不会执行任何操作。这通常意味着应用程序启动,检测到另一个副本已经在运行并立即关闭。如果是这种情况,并且您的程序在您启动此批处理文件之前正在运行,则批处理将循环并尝试每十秒启动您的程序。


KCo*_*eau 2

根据上面的答案,我建议您将该命令放入批处理文件中,然后将该批处理文件设置为每分钟作为计划任务运行。实际上没有与此相关的开销,并且它可以确保您的流程得到说明,无论您是否意识到它已停止。