Более надежный ping
метод проверки ошибок:
@echo off
set "host=192.168.1.1"
ping -n 1 "%host%" | findstr /r /c:"[0-9] *ms"
if %errorlevel% == 0 (
echo Success.
) else (
echo FAILURE.
)
Это работает, проверяя, напечатана ли строка 69 ms
или 314ms
ping
.
(в переведенных версиях Windows может быть напечатано 42 ms
(с пробелом), поэтому мы проверяем это.)
Причина:
Другие предложения, такие как сопоставление time=
или TTL
, не столь надежны, поскольку при проверке адреса IPv6 не отображается TTL
(по крайней мере, на моем компьютере с Windows 7), а переведенные версии Windows могут отображать переведенная версия строки time=
. Кроме того, time=
может быть не только переведено, но иногда это может быть time<
, а не time=
, как в случае time<1ms
.