Имя пользователя:
Пароль:
 

Название темы: ping-скрипт
Показать сообщение отдельно
jah jah вне форума Автор темы

Старожил


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

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


Цитата jah:
может кто подтолкнёт или без вариантов »
http://www.cyberforum.ru/cmd-bat/thread877664.html
автору спасибо за то, до чего дойти по справке проблематично

попробую ответить на ряд своих вопросов:

Цитата jah:
зачем там skip=2 »
возможно неверное предположение:
строим логику таким образом, чтобы внутри цикла for были "успешные" команды (хост доступен, превышено время ожидания), оставшийся вариант будем расценивать как "хост недоступен"
если хост недоступен, то ping возвращает ошибку, в приведённом варианте это не используется, используется возвращение ошибки самим циклом, для этого добавляется skip=2, в выводе на "хост не доступен" всего две строки, которые пропускаются, в результате в %%i нечего помещать и echo %%i приводит к ошибке, в результате которой работа цикла аварийно завершается, поэтому подхватывается код после || для самого цикла (а не внутри него)
таким образом, код для host not found отрабатывает как надо

Цитата jah:
зачем там ... delim без значения »
"delims=" это эквивалент tokens=* (подойдёт любой вариант), чтобы строки вывода по очереди помещались в %%i целиком (без разбивки на токены)


Цитата jah:
for /f "tokens=*" %%i in ('ping !ip! -n 1') do (
if errorlevel 1 (
echo !ip! - host not found
exit /b »
Цитата jah:
хотя оно также не отрабатывает как предполагалось »
неуспешность пинга как набора в цикле for не влияет на успешность предыдущей операции и соответственно на значение errorlevel, неуспешной операции до этого не было, поэтому %errorlevel% == 0 и команды в первом if пропускаются

Цитата jah:
как можно оставить комментарий в подобных местах »
rem, не

PS: с остальными пока туго, буду разговаривать здесь с собой, пока не просветлею или не опустятся руки

Отправлено: 23:28, 27-03-2014 | #6

Название темы: ping-скрипт