Когда я делаю nslookup, он возвращает свой собственный DNS и IP-адрес сервера, который я делаю nslookup. Как я могу избежать печати моего собственного DNS-сервера?
@echo off
for /f "tokens=*" %%A in (servers.txt) do nslookup %%A >>ips.txt
Когда я делаю nslookup, он возвращает свой собственный DNS и IP-адрес сервера, который я делаю nslookup. Как я могу избежать печати моего собственного DNS-сервера?
@echo off
for /f "tokens=*" %%A in (servers.txt) do nslookup %%A >>ips.txt
Используйте второй составленный For /f
чтобы проанализировать вывод nslookup и пропустить первые три строки:
@Echo off&SetLocal EnableExtensions EnableDelayedExpansion
For /f "tokens=*" %%A in (
servers.txt
) Do For /f "Skip=3 Tokens=1* Delims=: " %%B in (
'nslookup %%A'
) Do Echo %%B=%%C
Пример вывода
Name=Matar.fritz.box
Addresses=2003:dc:73c5:7800::0
=192.168.3.92
В зависимости от вашей настройки nslookup может вернуть более одного IP, даже включая адреса IPv6. Так что переход на IPv4 с Ping может быть проще:
@Echo off&SetLocal EnableExtensions EnableDelayedExpansion
For /f "tokens=*" %%A in (
servers.txt
) Do For /f "tokens=2Delims=[]" %%B in (
'Ping -4 -n 1 %%A ^|find "["'
) Do Echo IPv4=%%B
IPv4=192.168.192.92