If you ping to a lot of hosts concurrently, PingInfoView may return a failed result to some of the hosts, even if the hosts are ok. In order to solve this issue, go to the ‘Advanced Options’ and decrease the maximum number of concurrent pings.
:: 遍历所有结果文件 for%%Fin (*.log) do ( set "file=%%F" set "ip=!file:~0,-4!" :: 初始化变量 set "sent=0" & set "recv=0" & set "lost=0" set "min=9999" & set "max=9999" & set "avg=9999"
:: 提取已发送数据 for /f "tokens=4 delims= " %%ain ('findstr "已发送" "!file!"') do ( for /f "tokens=1 delims=, " %%bin ("%%a") doset sent=%%b )
:: 提取已接收数据 for /f "tokens=6 delims= " %%cin ('findstr "已接收" "!file!"') do ( for /f "tokens=1 delims=, " %%din ("%%c") doset recv=%%d )
:: 提取丢失数据 for /f "tokens=8 delims= " %%ein ('findstr "丢失" "!file!"') doset lost=%%e :: 提取最短延迟数据 for /f "tokens=3 delims= " %%fin ('findstr "最短" "!file!"') do ( for /f "tokens=1 delims=, " %%gin ("%%f") doset min=%%g )
:: 提取最长延迟数据 for /f "tokens=5 delims= " %%hin ('findstr "最长" "!file!"') do ( for /f "tokens=1 delims=, " %%iin ("%%h") doset max=%%i )
:: 数据清洗和格式化 set "min=!min:ms=!" & set "max=!max:ms=!" & set "avg=!avg:ms=!" if "!min!"=="" set "min=N/A" if "!max!"=="" set "max=N/A" if "!avg!"=="" set "avg=N/A"