![]() |
пропинговать ip адреса заданные в txt файле
Задача такая: необходимо пропинговать ip адреса заданные в txt файле списком и те адреса по которым пинг есть вынести в отдельный файл с именем компьютера и ip адресом. Проблем с массовым пингом не возникло, а вот вынести в файл не получается. Вот код:
Код:
FOR /F %%A IN (ips.txt) DO ping -n 1 -a %%A | find /i "domen.name" >> C:\ips_prom_res.txt |
Цитата:
Вот вариант с одним текстовым файлом
Код:
@Echo Off Хотелось бы получить от Вас файл после выполнения батника для нескольких пингующихся и непингующихся узлов
Код:
@Echo Off У меня выдача ping имеет вид
Код:
Pinging My_Comp_Name [192.168.1.5] with 32 bytes of data: |
Спасибо, первый вариант работает.
В файл попали и те ip по которым есть пинг и те которые без пинга, но были в DNS, т.е. пинга нет, но вернул строку с ip и доменным именем компа. Можете пояснить по коду, а то не давно начал постигать азы? |
Цитата:
Если Вас это не удовлетворяет, попробуйте этот вариант, полностью его проверить мне не на чем, я не в домене
Код:
@Echo Off Попробую объяснить, как это работает
Для обработки IP из списка текстового файла написал процедуру, в неё в виде аргумента передаётся IP. Call :Pinguin "%%p" Выдача ping обрабатывается в FOR (смотрите хелп FOR /?) для переданного в процедуру IP %~1 Первая строка ping пустая, мы её пропускаем ( skip=1 ) Выдачу ping разбираем на подстроки, в качестве разделителей подстрок выбираем "равно" и пробел. (delims== ") Рассмотрим первые 2 информационные строки (на примере двух ответов, с пингом и без): Код:
Pinging My_Comp_Name [192.168.1.5] with 32 bytes of data: If /I "%%k"=="[%~1]" Set "OutString=%%j %%k" В противном случае переменная OutString останется пустой. Во второй строке нам интересно наличие в 7 подстроке параметра TTL, который выдаётся при наличии ответа узла. Если TTL присутствует, делаем переменную OutTTL непустой. If /I "%%l"=="TTL" Set "OutTTL=TTL" Чтобы "поймать" вторую строку, смотрим первое слово, если оно Reply, то прекращаем обработку ping в FOR If /I "%%i"=="Reply" GoTo :Continue То есть нам для анализа строки выдачи ping понадобились 1,2,3,7 подстроки, что прописали в параметре FOR tokens=1,2,3,7 Им соответствуют переменные цикла по алфавиту начиная с %%i: %%i %%j %%k %%l Далее, если обе переменные непустые, записываю значение OutString в файл. Важно: в начале батника я определил кодовую страницу chcp 437 >nul При этом выдача Ping ocуществляется на английском языке. |
Спасибо большое. Теперь всё понял. Тему можно закрывать.
|
Время: 18:07. |
Время: 18:07.
© OSzone.net 2001-