我目前正在制作一个bat脚本,来ping主机,并返回Packetloss百分比和平均ms。Echo%var%打印FINDSTR参数
我正在使用/ f来获得结果。
唯一的问题是,数据包丢失和平均ms在两条不同的线路上。
因此,我使用subcalls和findstr为每个设置一个变量。
但是,当我试图再次调用该变量时,它包含了findstr命令的所有参数。
我该怎么办?
下面的代码:
@echo off
SETLOCAL
SET PingCMD=ping.exe -w 300 -n 1 127.0.0.1
FOR /f "tokens=3,6,9,10,11,12 delims=," %%A IN ('%PingCMD%') DO (
call :GetLoss %%A
call :GetAvg %%A
)
echo PacketLoss %loss% Average %avg%
pause
:GetLoss
SET loss=%1 %2 %3 %4 ^| findstr "loss tab"
GOTO :eof
:GetAvg
SET avg=%1 %2 %3 ^| findstr "Average Gennemsnit average gennemsnit"
GOTO :eof
EndLocal
你不需要',6,9,10,11,12'。无论如何 - 好的解决方案。 – Stephan
工程很好,ty! :) 我已经添加,丹麦equivalant(gennemsnit): '代码 :GetLoss IF “%1” == “迷失” SET损失=%2%3%4 IF “%1” == “Tabt”SET损失=%2%3%4 GOTO:eof :GetAvg 如果“%1”==“Average”SET avg =%2%3 如果“%1”==“Gennemsnit”SET avg =%2%3 GOTO:EOF ' – Saku