I want to ping an IP address every 5 seconds.
If the ping fails, write the date and time to a file.
Here is my non-working attempt... the loop works as intended, but I can't get it to write to a file if the ping fails.
@ECHO OFF
set IPADDRESS=172.30.1.36
set INTERVAL=5
:PINGINTERVAL
ping %IPADDRESS% -n 1
if errorlevel 1 echo %date% %time% >> failurelog.txt
timeout %INTERVAL%
GOTO PINGINTERVAL
In ipv4, ping command only raises errorlevel if there are packets lost. But in you are pinging a machine in your same subnet, you get no packets lost.
The easier way to test for ping success is to test for the "TTL=" string in the output of the ping
ping -n 1 %ipaddress% | find "TTL=" > nul
if errorlevel 1 echo %date% %time% >> failurelog.txt
来源:https://stackoverflow.com/questions/22203587/batch-script-ping-address-write-to-file-if-failure