![]() |
ping-скрипт
Здравствуйте!
Как можно грамотно реализовать данный скрипт (сам подход и вывод (возможно несколькими вариантами))? Сам скрипт (лучше пока не получилось): Код:
::chcp 65001 Код:
Код:
Также хотелось бы скриптом оценить не две, а три ситуации: - хост успешно отвечает, - превышен интервал ожидания для запроса, - хост не найден По локали ответ разный, хотелось бы ориентироваться на нечто типа %errorlevel%, но при превышении интервала ожидани она возвращает 0, то есть как и при успешном пинге. PS: попутно узнал, что называть командный файл типа ping.bat не стоило Спасибо! |
С учётом всех Ваших пожеланий:
Код:
@echo off Примечание: команда "find" не работает с кодовой страницей "65001", а команда "findstr" работает. |
Цитата:
если на на первый взгляд, то пока не понял в чём идея определения превышения времени интервала ожидания (к тому же в приведённой реализации не работает: на каждый из приведённых узлов выводит request timed out, хотя один доступен, а второго не существует), но тут сначала надо осмыслить детали приведённого Цитата:
также остался непонятным момент с переносом ok в выводе моего скрипта, или следует воспринять это как |
Georgio, можете пояснить свой код (зачем там skip=2 и delim без значения, расстановку скобку для решения данной задачи и почему код не отрабатывает как должен)?
я, в свою очередь, дошёл до такого, хотя оно также не отрабатывает как предполагалось, очевидно, где-то пробелы в логике, хотя с виду вроде бы всё чётко Код:
setlocal enableDelayedExpansion |
может кто подтолкнёт или без вариантов :)
пока рабочий вариант с двумя вариантами Код:
@echo off Также может быть кто-нибудь знает: 1. как можно организовать логику типа Код:
ping %%i -n 1 |>nul findstr "TTL=" || ( 2. как можно оставить комментарий и использовать метки (если это возможно) в подобных местах (может экранировать как-то нужно или как-то по-другому) Код:
ping %%i -n 1 |>nul findstr "TTL=" && ( |
Цитата:
автору спасибо за то, до чего дойти по справке проблематично попробую ответить на ряд своих вопросов: Цитата:
строим логику таким образом, чтобы внутри цикла for были "успешные" команды (хост доступен, превышено время ожидания), оставшийся вариант будем расценивать как "хост недоступен" если хост недоступен, то ping возвращает ошибку, в приведённом варианте это не используется, используется возвращение ошибки самим циклом, для этого добавляется skip=2, в выводе на "хост не доступен" всего две строки, которые пропускаются, в результате в %%i нечего помещать и echo %%i приводит к ошибке, в результате которой работа цикла аварийно завершается, поэтому подхватывается код после || для самого цикла (а не внутри него) таким образом, код для host not found отрабатывает как надо Цитата:
Цитата:
Цитата:
Цитата:
PS: с остальными пока туго, буду разговаривать здесь с собой, пока не просветлею или не опустятся руки :) |
Время: 12:24. |
Время: 12:24.
© OSzone.net 2001-