使用 Ping 时如何仅将主机名和 IP 导出到 excel 或 csv

When using Ping how can i export only the Hostname and IP to excel or csv

新来的,希望有人可以帮助我解决这个问题。

我有大约 200 个工作站已完成 DHCP 保留,我想对它们全部执行 Ping,return 仅主机名、IP。如果可能超时或失败,那也是一个加号,但不是必需的。

我想先声明我不是程序员。我所做的是创建一个 Bat 文件来执行大量 ping,但我不确定并且无法找到仅导出主机名和 IP 的解决方案。

我四处查看并 google 发现了一些 VB 脚本,但我对这些脚本的了解还不足以满足这种需要。

我希望能够在 excel 中看到与此类似的内容

测试主机名 | 192.168.1.1 | Failed/Timedout/pass

感谢您在这里提供的任何帮助。

这是一个子例程 (:getData) 以及如何使用它的示例。

没有简单的方法可以在一个 for 循环中获取所有需要的数据(可能以某种方式可行,但不值得麻烦),所以我用两个单独的 ping 解决了这个问题。

localhostgoogle 应该 return 成功,hp 已启动但没有回复 ping 并且 xxxxxxx.zzz 没有存在(还)

@echo off
setlocal 
for %%h in (localhost www.google.com www.hp.com xxxxxxx.zzz) do call :getData %%h
goto :eof

:getData
set "ip=unresolved"
set "ms=unreachable"
for /f "tokens=2 delims=[]" %%a in ('ping -4 -n 1 %1') do set "ip=%%a"
for /f "tokens=3 delims==<" %%a in ('ping -4 -n 4 %1^|find "TTL="') do set "ms=%%a"
set "result=%1^|%ip%^|%ms%"
set "result=%result: TTL=%"
set "result=%result:||=|unknown|%
echo %result%

输出:

localhost|127.0.0.1|1ms
www.google.com|172.217.22.100|13ms
www.hp.com|15.73.200.24|unreachable
xxxxxxx.zzz|unresolved|unreachable

正如您提到的,200 台主机需要一段时间。我们可以通过 运行 不同主机同时加速(这是最大的变化,也是最大的效果)。我还将等待时间从标准的 1000 毫秒减少到 200 毫秒,并将 ping 的数量从 4 减少到 2(我不会进一步减少它,因为有时包裹会丢失并导致误报)。同样对于这么多主机,您将使用此方法达到最大行长度。最好将主机名保存在一个文件中(每行一个)(hostnames.txt):

@echo off
setlocal 
if not "%~1" == "" goto :getData
for /f %%h in (hostnames.txt) do start /min "pinging %%~h" /min "%~f0" %%~h
echo waiting for result.csv to fill...
REM because some of the started processes are still running
timeout 5
goto :eof

:getData
set "ip=unresolved"
set "ms=unreachable"
for /f "tokens=2 delims=[]" %%a in ('ping -4 -n 1 -w 200 %~1') do set "ip=%%a"
for /f "tokens=3 delims==<" %%a in ('ping -4 -n 2 -w 200 %~1^|find "TTL="') do set "ms=%%a"
set "result=%~1^|%ip%^|%ms%"
set "result=%result: TTL=%"
echo %result%>>"%~dp0result.csv"
exit