在要使用的ping统计数字后删除ping令牌中的文本

时间:2014-05-04 15:42:36

标签: batch-file for-loop windows-xp ping

我正在批量进行简单的ping带宽测试以获得kb / s的速度,并且在平均往返时间为123ms之后我遇到了ms预告片的问题。批处理不能处理数字标记中的字母,并且它没有空间来设置另一个标记。我使用delims=查看了几个解决方案,但没有成功。我被困住了,除了手动输入数字以获得带宽外无法做任何事情。我正在运行Windows XP并且不想使用除批处理之外的任何东西,即没有VBS,Java,杂交棒等。如果无法通过简单的命令行完成,我只需手动输入数字即可完成用它。这是我的批次:

@echo off
color 0b
MODE CON:COLS=57 LINES=15
for /F "tokens=9" %%a in ('ping -n 1 -l 1024 8.8.8.8^| find "Average"') do set "A1=%%a"
echo %A1%
set /a T=%A1%
set /a varia=1000/%T%
set /a answer=%varia%
set /a varia2=%answer%
set /a answer2=%varia2%
echo.
echo    Speed %answer2% Kb/s
pause

这是来自stackoverflow的答案

@echo off
color 0b
MODE CON:COLS=57 LINES=15
for /f "tokens=9 delims=()" %%a in (
  'ping -n 1 -l 1024 8.8.8.8^| find "Average"'
  ) do (for /f "tokens=9" %%b in ("%%a") do (
   set num=%%b & set num=!num:%%=! 
   if !num! == !num! goto nc
  )
)
:nc
echo !num!
set /a T=!num!
set /a varia=1000/%T%
set /a answer=%varia%
set /a varia2=%answer%
set /a answer2=%varia2%
echo.
echo    Speed %answer2% Kb/s
pause

1 个答案:

答案 0 :(得分:0)

在XP中测试:它适用于Win 8.1

for /F "tokens=8 delims=ms=, " %%a in ('ping -n 1 -l 1024 8.8.8.8^| find "Average" ') do set "A1=%%a"