标题: [网络连接] 批处理如何获取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
- :loop
-
- for /f "tokens=3 delims==m" %%a in ('ping 14.17.42.40^|find "TTL"') do if %%a gtr 100 goto :break
-
- goto :loop
-
- :break
复制代码
作者: /zhqsystem/zhq 时间: 2016-1-21 23:03
回复 1# cowards
- @echo off
- for /f "delims=" %%i in ('ping.exe "114.114.114.114"^|find/i "ttl="')do (
- for %%j in (%%i)do if /i not "%%j"=="ttl" (set "_time_ms=%%j"
- )else (
- call set "_time_ms_new=%%_time_ms:ms=%%"
- for /f "delims=" %%k in ('call echo,%%_time_ms_new%%')do (
- echo,原始值:%%i
- echo,提取的值:%%k
- )
- )
- )
- 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 - @echo off
- echo ping获取time时间数值。如果小于100就一直循环判断,大于100就goto跳转
- echo 例如:来自 14.17.42.40 的回复: 字节=32 时间=76ms TTL=53
-
- for /f "tokens=2,4,6 delims==, " %%a in ('ping www.sohu.com -n 10 ^|find "平均"') do echo.最短延迟:%%a 最长延迟:%%b 平均延迟:%%c && pause
-
-
- :loop
-
- for /f "delims=" %%i in ('ping.exe "www.baidu.com"^|find/i "ttl="')do (
- for %%j in (%%i)do if /i not "%%j"=="ttl" (set "_time_ms=%%j"
- )else (
- call set "_time_ms_new=%%_time_ms:ms=%%"
- for /f "delims=" %%k in ('call echo,%%_time_ms_new%%')do (
- echo,原始值:%%i
- echo,提取的值:%%k
- if %%k gtr 100 goto :break
- goto :loop
-
- )
- )
- )
-
- :break
- 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
- :loop
- for /f "tokens=3 delims==m" %%a in ('ping www.qq.com^|find "TTL"') do if %%a gtr 200 goto break
- goto loop
- :break
- pause
- goto loop
复制代码
这样就算 ttl 大于200也不会跳转- :loop
- for /f "tokens=3 delims==m" %%a in ('ping www.qq.com^|find "time"') do if %%a gtr 200 goto break
- goto loop
- :break
- pause
复制代码
这样..不大于200 还是会直接跳转到break ......
作者: cowards 时间: 2016-1-22 13:28
大神在哪里5555555555555
作者: aa77dd@163.com 时间: 2016-1-22 14:19
回复 13# cowards
代码就是按你在顶楼所说, 解析出的时间以毫秒为单位的数值, 你不懂却瞎改, 还胡乱以为, 这个代码是看不到 ping 的原始输出的, 而只对其输出的毫秒数值进行提取和判断, 最后在满足条件时, 跳出循环- prompt $h
- @echo on
-
- :loop
-
- for /f "tokens=3 delims==m" %%a in ('ping 14.17.42.40^|find "TTL"') do if %%a gtr 100 goto :break
-
- goto :loop
-
- :break
-
- pause
复制代码
作者: cowards 时间: 2016-1-30 16:12
谢谢!!!!!!!!!!!!!!!!!!!!!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |