我有一个字符串
Approximate round trip times in milli-seconds:
Minimum = 133ms, Maximum = 150ms, Average = 142ms
和for循环
for /l %%x in (1, 1, 10) do (
for /f "tokens=7,9" %%a in ('ping -n 10 !ipaddr!') do (
if "x%%a"=="xAverage" (
如果第7个令牌(%a
)是“平均”,那么我想检查if /I %%b GTR 300
。但为此,我需要摆脱ms
(142ms
)中的%b
。我该怎么办?
答案 0 :(得分:3)
使用延迟扩展
setlocal enabledelayedexpansion
并分配给循环中的临时变量:
set avg=%%b
set avg=!avg:ms=!
然后使用!avg!
。
答案 1 :(得分:1)
你必须什么都不做(只需消除IF命令中的/ I开关)。因为数字也是字符串,所以您可以直接进行所需的比较并获得正确的结果:
if 142ms GTR 300 echo This not appear: 142ms is less than 300
if 350ms GTR 300 echo This appear: 350ms is greater than 300
当平均值精确到300毫秒时,唯一的问题就出现了,但是这种情况很容易解决,将值改为301:
if 300ms gtr 300 echo This appear but is wrong: 300ms is equal 300, not greater
if %%b gtr 301 echo OK: This appear when the value is greater 300 in all cases
安东尼奥