保持其他批处理文件运行的批处理文件

保持其他批处理文件运行的批处理文件

我每天 24 小时都在电脑上运行 3 个 .bat 文件,用于我经营的企业。由于我居住的地区网络中断,这些文件时不时会关闭,而它们需要网络才能运行。

有没有办法让我创建一个批处理文件,打开其他 3 个文件并检查其中一个是否已关闭,如果已关闭,则再次打开它?也许每隔 x 分钟检查一次

批处理文件的名称为:

vfile1.bat

vfile2.bat

vfile3.bat

所以基本上我想要打开一个像 group.bat 这样的文件,它会打开上面列表中的 3 个文件,如果它们关闭,它会重新打开它们。

我尝试在线寻找此解决方案但我不知道要搜索什么。

答案1

假设您的批处理文件名为 Batch01.bat、Batch02.bat 和 Batch03.bat,标题分别为 Batch01、Batch02 和 Batch03。您可以在批处理中设置这些,例如:标题 Batch01

可能看起来像这样:

@echo off
Title Keep Running Batchs
set Batch01Path=%userprofile%\desktop\Batch01.bat
set Batch02Path=%userprofile%\desktop\Batch02.bat
set Batch03Path=%userprofile%\desktop\Batch03.bat

:Restart
cls
echo.
tasklist /fi "windowtitle eq Batch01" /v /fo csv |find /i "Batch01" > Nul
if "%errorlevel%"=="0" (Echo  Batch01.bat Running OK) else (Echo  Batch01.bat Closed ...Restarting& start "" "%Batch01Path%") 
tasklist /fi "windowtitle eq  Batch02" /v /fo csv |find /i "Batch02" > Nul
if "%errorlevel%"=="0" (Echo  Batch02.bat Running OK) else (Echo  Batch02.bat Closed ...Restarting& start "" "%Batch02Path%")
tasklist /fi "windowtitle eq Batch03" /v /fo csv |find /i "Batch03" > Nul
if "%errorlevel%"=="0" (Echo  Batch03.bat Running OK) else (Echo  Batch03.bat Closed ...Restarting& start "" "%Batch03Path%")
timeout /t 5 >nul
goto :Restart

在此处输入图片描述

答案2

1.编辑您的file.bat并将名称添加到每个文件的标题:

title <nul && title vfile1.bat 
title <nul && title vfile2.bat 
title <nul && title vfile3.bat

rem :: Or add this line to each bat file :: 
title <nul && title %~n0

2.使用for循环,:labeloperator检查是否需要重新启动每个

@echo off  

title <nul && title %~n0

:loop
for %%i in ("vfile1","vfile2","vfile3")do (
     %__AppDir__%tasklist.exe /FI "windowtitle eq %%~i" >nul || start "" /b "%%i.bat"
    )
  
%__AppDir__%timeout.exe /t 6000 & goto :loop

阅读更多:

相关内容