Board logo

标题: [数值计算] 批处理怎么用ping的返回的响应时间大小,来判断网络通断和网络质量? [打印本页]

作者: tieyiren    时间: 2013-5-13 22:57     标题: 批处理怎么用ping的返回的响应时间大小,来判断网络通断和网络质量?

本帖最后由 pcl_test 于 2017-6-22 16:44 编辑

想用批处理ping一个网络ip,连续3个不通判断为掉线了,弹出提示框。连续3个返回值超过50,则判断为网络质量差,也弹出提示框!百度了很久都没正确的,有老大帮忙写一个吧!
作者: tieyiren    时间: 2013-5-13 22:58

最好是win7下能用
作者: xxpinqz    时间: 2013-5-14 01:21

  1. @echo off
  2. for /f "tokens=3 delims==m" %%a in ('ping www.bathome.net^|find /i "ttl="') do (
  3.   set /a n+=1
  4.   if %%a gtr 50 set /a t+=1
  5. )
  6. if %n% leq 1 msg %username% /time:5 网络不通
  7. if %t% geq 3 msg %username% /time:5 网络质量差
复制代码

作者: tieyiren    时间: 2013-5-14 10:36

win7下的延迟时间 time 直接显示汉字 时间=  ,怎么修改上面的?

来自 61.139.2.69 的回复: 字节=32 时间=52ms TTL=56
来自 61.139.2.69 的回复: 字节=32 时间=52ms TTL=56
来自 61.139.2.69 的回复: 字节=32 时间=52ms TTL=56
来自 61.139.2.69 的回复: 字节=32 时间=52ms TTL=56
来自 61.139.2.69 的回复: 字节=32 时间=52ms TTL=56
来自 61.139.2.69 的回复: 字节=32 时间=52ms TTL=56
来自 61.139.2.69 的回复: 字节=32 时间=52ms TTL=56
来自 61.139.2.69 的回复: 字节=32 时间=52ms TTL=56
作者: xxpinqz    时间: 2013-5-14 14:07

回复 4# tieyiren
要修改什么?????
你运行过上面代码吗?
作者: xxpinqz    时间: 2013-5-14 14:12

自己把第二行的www.bathome.net改为61.139.2.69 运行看,有问题说明清楚点反馈上来。
作者: tieyiren    时间: 2013-5-14 15:09

执行后即使网络不通,也只是弹出网络质量差的提示框

D:\>for /F "tokens=3 delims==m" %a in ('ping 192.168.0.22|find /i "ttl="') do (
set /a n+=1
if %a GTR 50 set /a t+=1
)

D:\>if 8 LEQ 1 msg zj /time:5 网络不通

D:\>if 8 GEQ 3 msg zj /time:5 网络质量差

D:\>
作者: tieyiren    时间: 2013-5-14 15:09

执行后即使网络不通,也只是弹出网络质量差的提示框

D:\>for /F "tokens=3 delims==m" %a in ('ping 192.168.0.22|find /i "ttl="') do (
set /a n+=1
if %a GTR 50 set /a t+=1
)

D:\>if 8 LEQ 1 msg zj /time:5 网络不通

D:\>if 8 GEQ 3 msg zj /time:5 网络质量差

D:\>
作者: tieyiren    时间: 2013-5-14 15:10

上面192.168.0.22是一个不通的ip,结果还是提示网络质量差。。
作者: tieyiren    时间: 2013-5-14 16:12

修改另外一个ip,就报错了!!

D:\>run.bat

D:\>for /F "tokens=3 delims==m" %a in ('ping 202.98.224.70|find /i "ttl="') do (

set /a n+=1
if %a GTR 50 set /a t+=1
)

D:\>(
set /a n+=1
if 16 GTR 50 set /a t+=1
)

D:\>(
set /a n+=1
if 15 GTR 50 set /a t+=1
)

D:\>(
set /a n+=1
if 15 GTR 50 set /a t+=1
)

D:\>(
set /a n+=1
if 15 GTR 50 set /a t+=1
)

D:\>if 8 LEQ 1 goto 1:
此时不应有 3。
作者: xxpinqz    时间: 2013-5-14 17:01

此时不应有 3的问题是因为变量n为空导致的,加一句就行了,复制下面代码-打开记事本-粘贴-保存为 .bat文件,双击此bat文件。
说明:N的值小于1时绝不会有T大于3的可能,t只会小于等于n,所以:
只要执行了语句if %n% leq 1 msg %username% /time:5 网络不通,下面的条件就绝不成立:
    if %t% geq 3 msg %username% /time:5 网络质量差
所以不会出现你说的通不通都显示质量差。
不知道你是怎么个测法的。。。。。。。。。。。,你就按本楼第一行的说法测试看。
如果你自己有改动过代码,有问题就把代码发上来。
  1. @echo off
  2. set /a n=t=0
  3. for /f "tokens=3 delims==m" %%a in ('ping 1.1^|find /i "ttl="') do (
  4.   set /a n+=1
  5.   if %%a gtr 50 set /a t+=1
  6. )
  7. if %n% leq 1 msg %username% /time:5 网络不通
  8. if %t% geq 3 msg %username% /time:5 网络质量差
复制代码

作者: tieyiren    时间: 2013-5-14 17:12

只是修改了地址 ping 谷歌,但是始终只有提示网络不通,google 延迟已经超过50,但是都不提示网络质量差,换另外一个ip也是只提示网络不通,不提示网络质量差!

D:\>for /F "tokens=3 delims==m" %a in ('ping www.google.com|find /i "ttl="') do
(
set /a n+=1
if %a GTR 50 set /a t+=1
)

D:\>(
set /a n+=1
if 217 GTR 50 set /a t+=1
)

D:\>if 1 LEQ 1 msg zj /time:5 网络不通

D:\>if 1 GEQ 3 msg zj /time:5 网络质量差

D:\>
作者: xxpinqz    时间: 2013-5-14 17:16

  1. @echo off
  2. set /a n=t=0
  3. for /f "tokens=3 delims==m" %%a in ('ping www.google.cn^|find /i "ttl="') do (
  4.   set /a n+=1
  5.   if %%a gtr 50 set /a t+=1
  6. )
  7. if %n% leq 1 msg %username% /time:5 网络不通
  8. if %t% geq 3 msg %username% /time:5 网络质量差
复制代码
你确定你的bat文件内的代码是这样的?????????
你把你保存的bat文件内容全选复制-粘贴上来。
你是在win7下测的吧
作者: xxpinqz    时间: 2013-5-14 17:20

if 1 LEQ 1 msg zj /time:5 网络不通,这表示你ping4次只连通一次,就是掉了3次了,不是网络不通是什么
if 1 GEQ 3 msg zj /time:5 网络质量差,表示大于50MS的就是一次,当然不显示质量差了
你自己问题描述:想用批处理ping一个网络ip,连续3个不通判断为掉线了,弹出提示框。连续3个返回值超过50,则判断为网络质量差????难道不是
作者: tieyiren    时间: 2013-5-14 17:23

现在对了,怎么回事?我也是复制代码,过去直接粘贴,然后就改了地址,就不行了,这次又可以,就是win7
作者: tieyiren    时间: 2013-5-14 17:27

感谢老大解释出批处理,我学习学习
作者: xxpinqz    时间: 2013-5-14 17:28

回复 12# tieyiren
只是修改了地址 ping 谷歌,但是始终只有提示网络不通,google 延迟已经超过50,但是都不提示网络质量差,
网络都不通了,还需要提示质量差,都不通了,质量肯定是差了,还提示什么。

你等看看有没其他人帮你回答吧,新手表示压力很大,,,完全搞不懂你想表达什么。
作者: tieyiren    时间: 2013-5-14 17:31

那就简单一点吧,我的意思就是一直ping一个ip地址,然后连续3个延迟超过50的,就提示网络质量差,然后循环运行!就不要不通的情况了,感谢。




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