loopsbatch-filepingwritetofile

Batch Script - Ping Address - Write to file if failure


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

Solution

  • 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