[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[网络连接] 批处理如何获取ping命令的响应时间并做判断?

来自 14.17.42.40 的回复: 字节=32 时间=725ms TTL=53
来自 14.17.42.40 的回复: 字节=32 时间=142ms TTL=53
来自 14.17.42.40 的回复: 字节=32 时间=217ms TTL=53
来自 14.17.42.40 的回复: 字节=32 时间=371ms TTL=53
来自 14.17.42.40 的回复: 字节=32 时间=175ms TTL=53
来自 14.17.42.40 的回复: 字节=32 时间=27ms TTL=53
来自 14.17.42.40 的回复: 字节=32 时间=35ms TTL=53
来自 14.17.42.40 的回复: 字节=32 时间=76ms TTL=53
我想获取其中的time 时间的数值,如果数值大于100了就跳转,如果数值没有大于100就一直循环的判断 ,直到超过100跳转!
求大神如何写。

  1. :loop
  2. for /f "tokens=3 delims==m" %%a in ('ping 14.17.42.40^|find "TTL"') do if %%a gtr 100 goto :break
  3. goto :loop
  4. :break
复制代码

TOP

回复 1# cowards
  1. @echo off
  2. for /f "delims=" %%i in ('ping.exe "114.114.114.114"^|find/i "ttl="')do (
  3. for %%j in (%%i)do if /i not "%%j"=="ttl" (set "_time_ms=%%j"
  4. )else (
  5.   call set "_time_ms_new=%%_time_ms:ms=%%"
  6.   for /f "delims=" %%k in ('call echo,%%_time_ms_new%%')do (
  7.    echo,原始值:%%i
  8.    echo,提取的值:%%k
  9.   )
  10. )
  11. )
  12. pause
复制代码
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

回复 2# aa77dd@163.com


ping中的time值 没有到100 循环了一段时间 会停。。

TOP

回复 3# /zhqsystem/zhq


    只能获取ttl吗?不能获取time吗 ?  time值变大了,ttl值 变化不大啊。。

就是正常PING www.qq.com 然后用迅雷之类的下载软件满速下载time值就会变大,然后就需要跳转。。。 但是ttl值没怎么变化。

TOP

正在 Ping 14.17.42.40 具有 32 字节的数据:
来自 14.17.42.40 的回复: 字节=32 时间=22ms TTL=53
来自 14.17.42.40 的回复: 字节=32 时间=23ms TTL=53
来自 14.17.42.40 的回复: 字节=32 时间=25ms TTL=53
来自 14.17.42.40 的回复: 字节=32 时间=33ms TTL=53
来自 14.17.42.40 的回复: 字节=32 时间=25ms TTL=53
来自 14.17.42.40 的回复: 字节=32 时间=38ms TTL=53
来自 14.17.42.40 的回复: 字节=32 时间=189ms TTL=53
来自 14.17.42.40 的回复: 字节=32 时间=81ms TTL=53
来自 14.17.42.40 的回复: 字节=32 时间=236ms TTL=53
来自 14.17.42.40 的回复: 字节=32 时间=192ms TTL=53
来自 14.17.42.40 的回复: 字节=32 时间=187ms TTL=53
来自 14.17.42.40 的回复: 字节=32 时间=136ms TTL=53
来自 14.17.42.40 的回复: 字节=32 时间=179ms TTL=53
来自 14.17.42.40 的回复: 字节=32 时间=194ms TTL=53
tll值。。没变过。但是time值变大了。。。

楼上二位大神,能不能判断下time值?

TOP

回复 6# cowards
ttl只是排除无用的行实体数据获取到的就是时间=值ms,理论上支持英文语言,直接搜索时间遇到英文系统不会出现"时间"这两个字
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

回复 1# cowards
  1. @echo off
  2. echo ping获取time时间数值。如果小于100就一直循环判断,大于100就goto跳转
  3. echo 例如:来自 14.17.42.40 的回复: 字节=32 时间=76ms TTL=53
  4. for /f "tokens=2,4,6 delims==, " %%a in ('ping www.sohu.com -n 10 ^|find "平均"') do echo.最短延迟:%%a 最长延迟:%%b 平均延迟:%%c && pause
  5. :loop
  6. for /f "delims=" %%i in ('ping.exe "www.baidu.com"^|find/i "ttl="')do (
  7. for %%j in (%%i)do if /i not "%%j"=="ttl" (set "_time_ms=%%j"
  8. )else (
  9.   call set "_time_ms_new=%%_time_ms:ms=%%"
  10.   for /f "delims=" %%k in ('call echo,%%_time_ms_new%%')do (
  11.    echo,原始值:%%i
  12.    echo,提取的值:%%k
  13. if %%k gtr 100 goto :break
  14. goto :loop
  15.   )
  16. )
  17. )
  18. :break
  19. pause
复制代码

TOP

谢谢两位大神。
/zhqsystem/zhq  大神的方法已经够我实现我想要的了。谢谢!

TOP

...........大神求助啊 ..昨天win 7测试没问题了.但是在 win 2003测试..判断time..或者ttl 正常也跳转,..

TOP

回复 2# aa77dd@163.com


    ..........大神求助啊 ..昨天win 7测试没问题了.但是在 win 2003测试..判断time..或者ttl 正常也跳转,..

TOP

  1. :loop
  2. for /f "tokens=3 delims==m" %%a in ('ping www.qq.com^|find "TTL"') do if %%a gtr 200 goto break
  3. goto loop
  4. :break
  5. pause
  6. goto loop
复制代码
这样就算 ttl 大于200也不会跳转
  1. :loop
  2. for /f "tokens=3 delims==m" %%a in ('ping www.qq.com^|find "time"') do if %%a gtr 200 goto break
  3. goto loop
  4. :break
  5. pause
复制代码
这样..不大于200 还是会直接跳转到break ......

TOP

大神在哪里5555555555555

TOP

回复 13# cowards

代码就是按你在顶楼所说,  解析出的时间以毫秒为单位的数值,  你不懂却瞎改,  还胡乱以为,  这个代码是看不到 ping 的原始输出的,  而只对其输出的毫秒数值进行提取和判断, 最后在满足条件时, 跳出循环
  1. prompt $h
  2. @echo on
  3. :loop
  4. for /f "tokens=3 delims==m" %%a in ('ping 14.17.42.40^|find "TTL"') do if %%a gtr 100 goto :break
  5. goto :loop
  6. :break
  7. pause
复制代码

TOP

谢谢!!!!!!!!!!!!!!!!!!!!!

TOP

返回列表