首页 > 解决方案 > 批处理文件过滤 ping 结果并附加 .csv

问题描述

我制作了一个简单的 For /L 循环脚本,以 x 次结束,其中包含一个嵌套循环,同时过滤 ping 结果。

@echo off
setlocal enableextensions enabledelayedexpansion

for /L %%D in (1,1, x times) do (
for /f "delims=" %%A in ('ping -n 2 -l 64 192.168.0.1 ^|findstr /c:"Packets" /c:"Minimum"') Do 
(CALL SET var=%%var%% %%A)
)
echo !var! >> pingresults.txt

endlocal

但是,此代码将结果生成为一行。

Packets: Sent = 2, Received = 2, Lost = 0 (0 loss),      Minimum = 1ms, Maximum = 3ms, Average = 2ms      Packets: Sent = 2, Received = 2, Lost = 0 (0 loss),      Minimum = 1ms, Maximum = 2ms, Average = 1ms      Packets: Sent = 2, Received = 2, Lost = 0 (0 loss),      Minimum = 2ms, Maximum = 3ms, Average = 2ms      Packets: Sent = 2, Received = 2, Lost = 0 (0 loss),      Minimum = 1ms, Maximum = 3ms, Average = 2ms      Packets: Sent = 2, Received = 2, Lost = 0 (0 loss),      Minimum = 2ms, Maximum = 7ms, Average = 4ms 

谁能帮我将这一行结果解析为多行?

此外,如果有人可以帮助将结果转换并附加到 .csv 格式如下:

  packetsent,packetrcv,packetloss,minlatency,maxlatency,avglatency,datetime
  2,2,0,2ms,7ms,4ms,datetimehere
  2,2,0,1ms,2ms,4ms,datetimehere

标签: batch-file

解决方案


我的项目需要重复 ping 120 个循环,每个循环有 50 个数据包计数。

顺便说一句,我找到了解决方案:

@echo off
setlocal enabledelayedexpansion

echo This Ping Test expected to be finished within 1.6 hours...
echo packetsent,packetreceived,packetloss,minlatency,maxlatency,avglatency,timestamp > ping.csv

(for /l %%A in (1,1,120) do (
  for /f "tokens=2,4,6 delims=,=(" %%i in ('ping 192.168.0.1 -n 50 -l 64 ^| findstr "Packet Minimum"') do (
     set all=!all!, %%i,%%j,%%k
     set all=!all: =!
    
)
echo !all:~1!,!date! !time! 
set "all="

) ) >> ping.csv
Echo ***Ping Test completed.***
pause

cmd 上的输出应如下所示:

C:\>ping.bat
This Ping Test expected to be finished within 1.6 hours...
2,2,0,25ms,26ms,25ms,Thu 10/06/2021  3:55:23.68
2,2,0,25ms,25ms,25ms,Thu 10/06/2021  3:55:24.79
2,2,0,24ms,25ms,24ms,Thu 10/06/2021  3:55:25.94
2,2,0,25ms,49ms,37ms,Thu 10/06/2021  3:55:27.05
2,2,0,25ms,26ms,25ms,Thu 10/06/2021  3:55:28.15
..........
***Ping Test completed.***
Press any key to continue . . .

抱歉,英语不是我的母语 :)


推荐阅读