Board logo

标题: [网络连接] 批处理如何获取ping命令的响应时间并做判断? [打印本页]

作者: cowards    时间: 2016-1-21 22:10     标题: 批处理如何获取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跳转!
求大神如何写。
作者: aa77dd@163.com    时间: 2016-1-21 22:57

  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
复制代码

作者: /zhqsystem/zhq    时间: 2016-1-21 23:03

回复 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
复制代码

作者: cowards    时间: 2016-1-21 23:04

回复 2# aa77dd@163.com


ping中的time值 没有到100 循环了一段时间 会停。。
作者: cowards    时间: 2016-1-21 23:09

回复 3# /zhqsystem/zhq


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

就是正常PING www.qq.com 然后用迅雷之类的下载软件满速下载time值就会变大,然后就需要跳转。。。 但是ttl值没怎么变化。
作者: cowards    时间: 2016-1-21 23:10

正在 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值?
作者: /zhqsystem/zhq    时间: 2016-1-21 23:15

回复 6# cowards
ttl只是排除无用的行实体数据获取到的就是时间=值ms,理论上支持英文语言,直接搜索时间遇到英文系统不会出现"时间"这两个字
作者: ygqiang    时间: 2016-1-21 23:16

回复 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
复制代码

作者: cowards    时间: 2016-1-21 23:20

谢谢两位大神。
/zhqsystem/zhq  大神的方法已经够我实现我想要的了。谢谢!
作者: cowards    时间: 2016-1-22 12:49

...........大神求助啊 ..昨天win 7测试没问题了.但是在 win 2003测试..判断time..或者ttl 正常也跳转,..
作者: cowards    时间: 2016-1-22 12:50

回复 2# aa77dd@163.com


    ..........大神求助啊 ..昨天win 7测试没问题了.但是在 win 2003测试..判断time..或者ttl 正常也跳转,..
作者: cowards    时间: 2016-1-22 13:00

  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 ......
作者: cowards    时间: 2016-1-22 13:28

大神在哪里5555555555555
作者: aa77dd@163.com    时间: 2016-1-22 14:19

回复 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
复制代码

作者: cowards    时间: 2016-1-30 16:12

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




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2