.bat用于检查窗口或进程是否已打开或正在运行,如果未执行其他操作,则执行此操作

您所在的位置:网站首页 如果打开运行窗口 .bat用于检查窗口或进程是否已打开或正在运行,如果未执行其他操作,则执行此操作

.bat用于检查窗口或进程是否已打开或正在运行,如果未执行其他操作,则执行此操作

2024-07-03 08:21| 来源: 网络整理| 查看: 265

我需要一点帮助。

我需要创建一个.bat文件来检查进程是否每隔5秒运行一次。如果进程正在运行,那么它将在5秒内重新设置并再次检查。如果该进程未运行,则会关闭所有其他.bat文件并重新启动所有文件。

这是针对游戏服务器的。所以现在整个过程包括几个.bat文件,它们做了不同的事情。initiate.bat通过启动startserver.bat来启动该进程。然后startserver.bat启动游戏服务器,它的窗口打开,服务器启动,它启动.bat文件schedule.bat,该文件设置计时器,一旦计时器用完就重新启动服务器,然后startserver.bat启动anticrash.bat,其代码如下所示。

我有一种感觉,代码没有找到服务器窗口或进程。我仔细检查了进程文件名,并确保它是正确的。服务器窗口中的标题只是指向.exe的路径,但无论我尝试什么,都无法使其正常工作。它总是在一个循环中结束,并且不能识别打开或关闭的进程,它只是缺省为"Server was not found!“。如果我交换代码,它将简单地循环“发现了服务器!”然后继续往前走。

这也不是我尝试过的唯一示例。我已经查看了我能找到的关于如何检查进程或窗口是否打开的每一篇文章。我已经尝试在窗口中添加一个标题并搜索该标题,我还尝试了其他代码配置和if then语句,但都不起作用。

最后,我希望.bat简单地检查服务器进程是否正在运行,或者窗口是否打开,因为我并不关心它如何识别它,如果服务器窗口是打开的并且服务器正在运行,那么只需每5秒重新检查一次。如果发现进程或窗口已关闭或结束,则应关闭所有其他.bats并重新启动启动服务器的进程。它主要是在服务器崩溃时使用的,如果服务器崩溃了,我希望它重新启动。

代码语言:javascript复制@echo off goto check :check cls echo Starting Anit Crash... Check every 5 Seconds... SETLOCAL EnableExtensions set EXE=program.exe FOR /F %%x IN ('tasklist /NH /FI "IMAGENAME eq %EXE%"') DO IF %%x == %EXE% goto FOUND echo Server was not found! echo Server may have crashed... timeout /t 5 echo Shutting Down Other Processes First... taskkill /f /im "schedule.bat" echo Server Restarting... start cmd /k call initiate.bat echo Exiting Anti Crash... timeout /t 3 goto FIN :FOUND echo Server Was Found... echo Server Is Active... Rechecking In 5 Seconds... timeout /t 5 goto check :FIN exit


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3