当我执行 nslookup 时,它会返回我自己的 DNS 和我正在执行 nslookup 的服务器的 IP 地址。我怎样才能避免它打印我自己的 DNS 服务器?
@echo off
for /f "tokens=*" %%A in (servers.txt) do nslookup %%A >>ips.txt
答案1
使用第二个堆栈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 地址。因此使用 Ping 查找 IPv4 可能更容易:
@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