How can I check in batch-file if host is reachable or not? The problem is that ping
returns 0 not only on success, but also on Destination host unreachable
error:
C:\>ping 192.168.1.1 -n 1
Pinging 192.168.1.1 with 32 bytes of data:
Reply from 192.168.1.1: bytes=32 time=3ms TTL=64
Ping statistics for 192.168.1.1:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 3ms, Maximum = 3ms, Average = 3ms
C:\>echo %errorlevel%
0
C:\>ping 192.168.1.105 -n 1
Pinging 192.168.1.105 with 32 bytes of data:
Reply from 192.168.1.102: Destination host unreachable.
Ping statistics for 192.168.1.105:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
C:\>echo %errorlevel%
0
Is there any way to do it with ping
or any other build-in-Windows tool? I would prefer not to install anything if that's possible...
Next code snippet should work:
set "_ip=localhost"
set "_ip=192.168.1.1"
ping %_ip% -n 1 -4 | find /i "TTL=">nul
if errorlevel 1 (
echo ping %_ip% failure
) else (
echo ping %_ip% success
)
-4
to force using IPv4 (as e.g. ping localhost
replies IPv6 with no TTL=
output)| find /i "TTL="
as find
command raises errorlevel
well>nul
to suppress undesired outputIf you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With