从 ping 获取主机名并将结果存储到文本
Get hostnames from ping and store results to text
好的,情况就是这样。我有一个非常大的文本文件,其中包含许多不同的 IP 地址。我想创建一个批处理文件或任何可以完成工作的文件,以便解析这些 IP 地址的所有主机名。
目前,我将 IP 地址每行存储在一个名为 addresses.txt.
的文件中
我还有一个批处理文件,代码如下:
@echo off
for /f "delims=" %%a in (addresses.txt) do ping -a %%a >> PING_LOG.txt && (echo %%a Passed) || (echo %%a Failed)
pause
这似乎工作正常。它用 ping 的所有结果填充我的文本文件;主机名、回复、统计数据、数据包等
问题是:
我 只 想要将我 ping 的地址和主机名写入我的输出文件。有什么办法可以做到这一点?通过批处理命令?通过其他方式(例如获取输出文件并 运行 通过其他方式获取信息)?我仍在积极尝试了解我能找出什么,但我们将不胜感激任何帮助。
(最终目标是将主机名和地址并排放置在 excel 电子表格中,考虑到有成千上万的人手动这样做听起来很糟糕)
我的最终解决方案
@echo off
setlocal EnableDelayedExpansion
for /f "tokens=*" %%A in (addresses.txt) do (
set "_res=%%A"
for /f "tokens=2" %%B in ('^(nslookup %%A ^) ^| findstr /c:"Name:"') do set "_res=!_res!, %%B"
echo !_res! >> LOG.txt
echo !_res!
)
endlocal
感谢 Dmitry 和 Gravity 的帮助^
接下来,我将数据放入电子表格(只有一列)。我编写了一个宏脚本来查看每个单元格,使用逗号作为分隔符将数据拆分为一个字符串数组,然后将每个结果字符串并排放入一列 (ip | name)。
将ping ...
命令传递给findstr
,然后在第二个for
循环中解析输出:
@echo off
setlocal EnableDelayedExpansion
for /f "tokens=*" %%A in (addresses.txt) do (
set "_res=%%A"
for /f "tokens=2" %%B in ('^(ping -a %%A ^&^& echo --- ok^|^| echo --- failed^) ^| findstr /c:" [" /c:"---"') do set "_res=!_res!, %%B"
echo !_res!
)
endlocal
对于addresses.txt
8.8.8.8
88.88.77.77
会产生
8.8.8.8, google-public-dns-a.google.com, ok
88.88.77.77, ti0150a400-1603.bb.online.no, failed
好的,情况就是这样。我有一个非常大的文本文件,其中包含许多不同的 IP 地址。我想创建一个批处理文件或任何可以完成工作的文件,以便解析这些 IP 地址的所有主机名。
目前,我将 IP 地址每行存储在一个名为 addresses.txt.
的文件中我还有一个批处理文件,代码如下:
@echo off
for /f "delims=" %%a in (addresses.txt) do ping -a %%a >> PING_LOG.txt && (echo %%a Passed) || (echo %%a Failed)
pause
这似乎工作正常。它用 ping 的所有结果填充我的文本文件;主机名、回复、统计数据、数据包等
问题是: 我 只 想要将我 ping 的地址和主机名写入我的输出文件。有什么办法可以做到这一点?通过批处理命令?通过其他方式(例如获取输出文件并 运行 通过其他方式获取信息)?我仍在积极尝试了解我能找出什么,但我们将不胜感激任何帮助。
(最终目标是将主机名和地址并排放置在 excel 电子表格中,考虑到有成千上万的人手动这样做听起来很糟糕)
我的最终解决方案
@echo off
setlocal EnableDelayedExpansion
for /f "tokens=*" %%A in (addresses.txt) do (
set "_res=%%A"
for /f "tokens=2" %%B in ('^(nslookup %%A ^) ^| findstr /c:"Name:"') do set "_res=!_res!, %%B"
echo !_res! >> LOG.txt
echo !_res!
)
endlocal
感谢 Dmitry 和 Gravity 的帮助^
接下来,我将数据放入电子表格(只有一列)。我编写了一个宏脚本来查看每个单元格,使用逗号作为分隔符将数据拆分为一个字符串数组,然后将每个结果字符串并排放入一列 (ip | name)。
将ping ...
命令传递给findstr
,然后在第二个for
循环中解析输出:
@echo off
setlocal EnableDelayedExpansion
for /f "tokens=*" %%A in (addresses.txt) do (
set "_res=%%A"
for /f "tokens=2" %%B in ('^(ping -a %%A ^&^& echo --- ok^|^| echo --- failed^) ^| findstr /c:" [" /c:"---"') do set "_res=!_res!, %%B"
echo !_res!
)
endlocal
对于addresses.txt
8.8.8.8
88.88.77.77
会产生
8.8.8.8, google-public-dns-a.google.com, ok
88.88.77.77, ti0150a400-1603.bb.online.no, failed