本帖最后由 neavo 于 2023-8-12 09:53 编辑
@echo off
set ip=m.neavo.me
:FuncMain
D:
cd D:\Batch
ping %ip% | find "TTL" && goto FuncDone || goto FuncRepeatOne
exit
:FuncDone
set hour=%time:~,2%
if "%time:~,1%"==" " set hour=0%time:~1,1%
echo [I] %date:~0,4%%date:~5,2%%date:~8,2%-%hour%%time:~3,2%%time:~6,2% : Done ... >> log\UPSCheck\%date:~0,4%%date:~5,2%%date:~8,2%.txt
exit
:FuncRepeatOne
set hour=%time:~,2%
if "%time:~,1%"==" " set hour=0%time:~1,1%
echo [W] %date:~0,4%%date:~5,2%%date:~8,2%-%hour%%time:~3,2%%time:~6,2% : Failed ... >> log\UPSCheck\%date:~0,4%%date:~5,2%%date:~8,2%.txt
timeout /t 300 /nobreak
ping %ip% | find "TTL" && goto FuncDone || goto FuncRepeatTwo
exit
:FuncRepeatTwo
set hour=%time:~,2%
if "%time:~,1%"==" " set hour=0%time:~1,1%
echo [W] %date:~0,4%%date:~5,2%%date:~8,2%-%hour%%time:~3,2%%time:~6,2% : Failed ... >> log\UPSCheck\%date:~0,4%%date:~5,2%%date:~8,2%.txt
timeout /t 300 /nobreak
ping %ip% | find "TTL" && goto FuncDone || goto FuncShutdown
exit
:FuncShutdown
set hour=%time:~,2%
if "%time:~,1%"==" " set hour=0%time:~1,1%
echo [E] %date:~0,4%%date:~5,2%%date:~8,2%-%hour%%time:~3,2%%time:~6,2% : Shutdown ... >> log\UPSCheck\%date:~0,4%%date:~5,2%%date:~8,2%.txt & shutdown /s /t 10
exit
pause
来个命令行版的
逻辑是ping目标域名/IP,不通的话五分钟重试,重试两次都不通则五分钟后关机,相关操作记录会写入LOG文件,记录相关时间轴
路径和目标域名/IP自己改下应该就能用 |