我正在批量进行简单的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
答案 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"