Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Старожил


Сообщения: 414
Благодарности: 257

Профиль | Отправить PM | Цитировать


Цитата YouHim:
Но пинги тоже не спасают »
Подозреваю, это связано с тем, что ping не всегда возвращает ненулевой errorlevel, если пинг не прошел. Сталкивался с этим во время написания одного скрипта, ping выдавал "Ответ от мой_внешний_ip: Заданная сеть недоступна.", но errorlevel равнялся нулю.
Предлагаю делать тщательный разбор того, что возвращает нам ping, а не слепо полагаться на %ErrorLevel% У меня это реализовано вот так:
Код: Выделить весь код
Ping -n 1 -w 1000 8.8.8.8|Find "TTL=">nul&&Echo Connected
или
Код: Выделить весь код
Ping -n 1 -w 1000 8.8.8.8|Find "TTL=">nul
If %ErrorLevel%==0 (
Echo Online
) Else (
Echo Offline
)
Второй вариант предпочтительнее, когда нужно в зависимости от того, прошел пинг или нет - совершить разные действия, ведь && и || одновременно в однострочник не вставишь. В ответе ping ищется именно "TTL=" по нескольким причинам: 1) Не зависит от локализации системы; 2) Появляется только при действительно прошедшем пинге.

Ещё, как вариант - можно использовать GnuWin32 wget и тянуть google.com/favicon.ico, а затем проверять на наличие файла (ключами указать несколько попыток и достаточный таймаут)

Последний раз редактировалось Anonymоus, 20-12-2011 в 12:28.

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:23, 20-12-2011 | #29