【问题标题】:How to extract number from string in BATCH and get total of all numbers?如何从 BATCH 中的字符串中提取数字并获得所有数字的总数?
【发布时间】:2014-03-28 21:14:56
【问题描述】:

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

例如:

ping 127.0.0.1


应该显示

1
1
1
1

而不是

来自 127.0.0.1 的回复:bytes=32 time 来自 127.0.0.1 的回复:bytes=32 time 来自 127.0.0.1 的回复:bytes=32 time 来自 127.0.0.1 的回复:bytes=32 time

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

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

它显示如下输出:

时间 时间 时间 时间

我想从中提取 1。

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

【问题讨论】:

  • 您可以通过使用 for /f 命令变得更加挑剔来提取 1;但是你不可能只使用默认的 Windows 批处理命令来计算总数。最好的办法是引入真正的脚本语言,例如 Perl、VBScript 或 Powershell。
  • @RossPresser 这是一个单班轮,罗斯。 :) 见下文。
  • (捂脸)我应该知道的。

标签: windows batch-file


【解决方案1】:

这在这里有效:

@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

【讨论】:

  • 即使,如果这取决于语言 - 我喜欢你不同的思维方式^^
【解决方案2】:

类似这样的:

@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!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 2016-06-24
    • 1970-01-01
    相关资源
    最近更新 更多