【发布时间】:2017-07-18 07:31:05
【问题描述】:
我正在尝试制作一个执行 ping 并将一些结果存储为变量的批处理文件。我正在尝试存储发送、接收、丢失的数据包以及最小、最大平均延迟。
我已经设法做到了,尽管使用了单独的 ping 命令,因此每个变量中的结果来自单独的数据集并且彼此不相关:
@ECHO OFF
FOR /F "tokens=4 delims=, " %%A IN ('ping -n 2 8.8.4.4 ^| findstr /R "^Packets: Sent =.$"') DO SET SENTPACKETS=%%A
ECHO Packets sent: %SENTPACKETS%
FOR /F "tokens=7 delims=, " %%A IN ('ping -n 2 8.8.4.4 ^| findstr /R "^Packets: Sent =.$"') DO SET RECEIVEDPACKETS=%%A
ECHO Packets received: %RECEIVEDPACKETS%
FOR /F "tokens=10 delims= " %%A IN ('ping -n 2 8.8.4.4 ^| findstr /R "^Packets: Sent =.$"') DO SET LOSTPACKETS=%%A
ECHO Packets lost: %LOSTPACKETS%
FOR /F "tokens=4 delims=,m " %%A IN ('ping -n 2 8.8.4.4') DO SET MINIMUMLATENCY=%%A
ECHO Minimum latency: %MINIMUMLATENCY%
FOR /F "tokens=9 delims=,m " %%A IN ('ping -n 2 8.8.4.4') DO SET MAXIMUMLATENCY=%%A
ECHO Maximum latency: %MAXIMUMLATENCY%
FOR /F "tokens=13 delims=,m " %%A IN ('ping -n 2 8.8.4.4') DO SET AVERAGELATENCY=%%A
ECHO Average latency: %AVERAGELATENCY%
pause
所以为了尝试解决这个问题并从同一个 ping 命令中收集所有变量,我尝试将结果存储在一个 .txt 文件中,如下所示:
@echo off
ping 8.8.4.4>c:\data.txt
FOR /F "tokens=3 delims= " %%A IN (c:\data.txt) DO SET SENTPACKETS=%%A
ECHO Packets sent: %SENTPACKETS%
FOR /F "tokens=7 delims= " %%A IN (c:\data.txt) DO SET RECEIVEDPACKETS=%%A
ECHO Packets received: %RECEIVEDPACKETS%
FOR /F "tokens=10 delims= " %%A IN (c:\data.txt) DO SET LOSTPACKETS=%%A
ECHO Packets lost: %LOSTPACKETS%
FOR /F "tokens=4 delims=,m " %%A IN (c:\data.txt) DO SET MINIMUMLATENCY=%%A
ECHO Minimum latency: %MINIMUMLATENCY%
FOR /F "tokens=9 delims=,m " %%A IN (c:\data.txt) DO SET MAXIMUMLATENCY=%%A
ECHO Maximum latency: %MAXIMUMLATENCY%
FOR /F "tokens=13 delims=,m " %%A IN (c:\data.txt) DO SET AVERAGELATENCY=%%A
ECHO Average latency: %AVERAGELATENCY%
pause
我知道我的最小、最大、平均延迟数据是正确的,也许丢失的数据包数量(我不确定那个),但发送和接收的数据包数量是没有从正确的“令牌”中读取,无论我尝试什么,我似乎都无法从 data.txt 中的正确行读取它
有什么想法吗?
【问题讨论】:
标签: batch-file cmd