如何从BATCH中的字符串中提取数字并获得所有数字的总和?

时间:2014-03-28 21:14:56

标签: windows batch-file

我想从ping命令中仅提取响应时间。

例如:

  

ping 127.0.0.1


应显示

  
    

1
    1
    1
    1

  

而不是

  
    

来自127.0.0.1的回复:bytes = 32 time< 1ms TTL = 64
    来自127.0.0.1的回复:bytes = 32 time< 1ms TTL = 64
    来自127.0.0.1的回复:bytes = 32 time< 1ms TTL = 64
    来自127.0.0.1的回复:bytes = 32 time< 1ms TTL = 64

  

我试图从谷歌获得解决方案,但我得到一个命令:

  

ping 127.0.0.1 | for / f“tokens = 5”%i in('findstr Reply')do @echo%i

显示输出如:

  
    

时间< 1ms的
    时间< 1ms的
    时间< 1ms的
    时间< 1ms的

  

我想从中提取1。

如果可能,我想计算所有响应时间的总和。

2 个答案:

答案 0 :(得分:2)

这可以在这里工作:

@echo off
for /f "tokens=4 delims=Replyfrombytes=time<ms" %%a in ('ping 127.0.0.1 ^|find "TTL" ') do echo %%a&set /a c=c+%%a
echo Total=%c%
pause

答案 1 :(得分:1)

类似的东西:

@ECHO OFF
setlocal EnableDelayedExpansion
set $total=0
for /f "tokens=5" %%i in ('ping 127.0.0.1 ^|findstr Reply') do (
set $var=%%i
set $var=!$var:time^<=!
set $var=!$var:ms=!
echo !$var!
set /a $total=!$total!+!$var!)
echo !$total!