Войти

Показать полную графическую версию : bat брал доменные имена и пинговал и выводил доменное имя - ip компьютера


Caliosto
15-10-2020, 12:10
Добрый день
очень срочно нужен BAT файлик, который делал бы следующее
Есть список доменных имен, например он будет в txt файле или в exel не критично
Нужно что бы bat брал доменные имена и пинговал их и по итоге был фаил с результатом где отображался бы доменное имя - ip компьютера

Я в другой ветке нашел bat но он делает не много на оборот
берет с файлика айпишники, но мне надо что бы он брал с файла доменные имена, а не айпишники. как его подправить ?

Было бы еще супер, если бы в случае если доменное имя не пингуется. то в файлике где отображается результат отображалось бы например доменное имя - узел не найден

@Echo Off
cls

chcp 437 >nul

Set "FileIp=ips.txt"
Set "FileOut=%~dpnx0.ips.txt"

Del "%FileOut%" 2>nul
FOR /F "usebackq" %%p IN ("%FileIp%") DO Call :Pinguin "%%p"

GoTo :Eof

:Pinguin
Echo %~1
Set "OutString="
Set "OutTTL="
FOR /F "usebackq skip=1 tokens=1,2,3,7 delims== " %%i IN (`ping -4 -n 1 -a %~1`) DO (
If /I "%%k"=="[%~1]" Set "OutString=%%j %%k"
If /I "%%l"=="TTL" Set "OutTTL=TTL"
If /I "%%i"=="Reply" GoTo :Continue

)
:Continue
If Not "%OutString%"=="" If Not "%OutTTL%"=="" Echo %OutString%>>"%FileOut%"
GoTo :Eof

Elven
15-10-2020, 13:58
весьма приблизительно, не проверял

Set "FileIp=ips.txt"

FOR /F "usebackq" %%p IN ("%FileIp%") DO (
ping %%p > NUL && (
echo %%p avaliable >> result.txt
)||(
echo %%p not avaliable >> result.txt
)
)
в подобном варианте будет ощутимый минус: на опрос каждого хоста будет уходить не менее 4 секунд (если хост недоступен - больше), а значит 10 хостов проверится за минуту, а 100 - уже минут за десять. Лучше пользовать posershell с вот этим вот модулем (https://gallery.technet.microsoft.com/scriptcenter/Asynchronous-Network-Ping-abdf01aa). Примеры есть здесь (http://forum.oszone.net/thread-334861.html).




© OSzone.net 2001-2012