当 Windows 软件重复出现错误消息并将其写入其目录中的日志文件时,如何才能自动重新启动该软件?
我研究过许多软件产品,例如 wintail、beartail 等,但它们都只能“跟踪”日志文件,而不能对错误消息采取行动。
我想要实现的是:C:\examplesoftware\log.txt
2019-11-08 21:20:43 错误,会话超时,服务器
2019-11-08 21:20:43 错误,会话超时,服务器
2019-11-08 21:20:43 错误,会话超时,服务器
当第三次出现“会话超时到服务器”时,我想退出软件并重新启动它。
提前感谢任何有用的建议
答案1
以下.bat
文件将循环直至停止,每秒提取所有包含字符串“ERROR”的行,计数这些行(find /c /v ""
),将计数与“3”进行比较,如果相等,则执行操作:
:loop
FOR /F "tokens=* USEBACKQ" %%F IN (`findstr "ERROR" "C:\examplesoftware\log.txt" ^| find /c /v ""`) DO set NUMBER=%%F
if "%NUMBER%"=="3" goto found
timeout /t 1 > NUL
goto loop
:found
echo Do it here
goto loop
如果程序可能在一秒钟内写入超过三行错误,则可以在合理范围内添加更多 IF 命令以获得更高的数字。