Batch Script - Ping Address - Write to file if failure

adam picture adam · Mar 5, 2014 · Viewed 18.9k times · Source

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

Answer

MC ND picture MC ND · Mar 5, 2014

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