我每天 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
循环,:label
并operator
检查是否需要重新启动每个
@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
阅读更多: