创建一个txt文本文档,写入下面代码,保存为ANSI编码的bat文件
@echo off
setlocal enabledelayedexpansion
set "failCount=0"
set "maxFails=3"
rem 定义要 ping 的 IP 地址
set "ips=192.168.1.2 192.168.1.3 192.168.1.4"
:loop
set "allFailed=true" rem 假设所有 IP 都失败
rem 输出当前时间
echo 当前时间: %date% %time%
for %%i in (%ips%) do (
rem 执行 ping 命令并检查输出
ping -n 1 %%i | find "TTL=" >nul
if !errorlevel! equ 0 (
echo %%i 可访问。
set "allFailed=false" rem 如果有一个 IP 可达,将 allFailed 设置为 false
) else (
echo %%i 无法访问。
)
)
rem 如果所有 IP 地址都无法访问,增加失败计数
if "!allFailed!"=="true" (
set /a failCount+=1
) else (
set "failCount=0" rem 如果有可达的 IP,重置失败计数
)
rem 如果连续失败次数达到 3 次,则关机
if !failCount! geq !maxFails! (
echo 所有地址连续3次 ping 失败。将在1分钟后关机。
timeout /t 60
shutdown /s /t 0
)
echo 将在 3 分钟后进行下一次检查。
timeout /t 180
goto loop