如何以表格格式记录ping统计信息?

时间:2015-07-21 19:10:05

标签: windows batch-file scripting

我需要在Windows上将ping统计信息记录为表格格式。

C:\Users\hsangal>ping localhost -t -n 2

Pinging TechBeamers.local [127.0.0.1] with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128

Ping statistics for 127.0.0.1:
Packets: Sent = 2, Received = 2, Lost = 0 (0% loss)
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

我想使用Windows批处理脚本来寻找专家的一些主导。我希望以表格格式记录的数据是下面突出显示的ping命令输出的一部分:

Packets: Sent = 2, Received = 2, Lost = 0 (0% loss)

3 个答案:

答案 0 :(得分:0)

如果您使用Powershell Test-Connection命令

Test-Connection localhost

结果采用如下表格格式: enter image description here

如果您想丢失丢失的数据包,可以执行以下操作。假设您想查看5个ping中有多少丢失的数据包:

   $pingCount = 5
   $x = Test-Connection localhost -count $pingCount
   $lostPackets = $pingCount - $x.count

答案 1 :(得分:0)

如果您要编写脚本并希望格式化输出,则可能需要考虑使用Powershell Test-Connection。它有更多选项来格式化输出。

多输出,例如: C:GT;测试连接www.google.co.za,www.yahoo.com

列选择和导出只是其中的一部分功能。此链接提供了一个很好的概述:https://technet.microsoft.com/en-us/library/hh849808.aspx

答案 2 :(得分:0)

您可以使用find获取仅包含感兴趣信息的行,例如:

ping localhost -n 2 | find "Packets:"

这只返回Packets: Sent = 2, Received = 2, Lost = 0 (0% loss),行 然后你将这样的for /F语句包裹起来:

for /F "tokens=3,5,7,8 delims=,=() " %I in ('ping localhost -n 2 ^| find "Packets:"') do echo %I;%J;%K;%L

输出将是这个(发送的数据包;收到的数据包;丢失的数据包;%丢失):

2;2;0;0%

当然,您可以指定(a);以外的分隔符(只需在最终的echo语句中进行交换)。
注意上述代码只有在直接输入命令提示符时才有效。如果要在批处理文件中使用它,请将变量%I等替换为%%I

注意:当您提供-t切换时,ping命令行中的-n开关会被忽略。