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

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

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

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

最好是win7下能用

TOP

  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 网络质量差
复制代码
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

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

TOP

回复 4# tieyiren
要修改什么?????
你运行过上面代码吗?
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

自己把第二行的www.bathome.net改为61.139.2.69 运行看,有问题说明清楚点反馈上来。
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

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

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:\>

TOP

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

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:\>

TOP

上面192.168.0.22是一个不通的ip,结果还是提示网络质量差。。

TOP

修改另外一个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。

TOP

此时不应有 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 网络质量差
复制代码
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

只是修改了地址 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:\>

TOP

  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下测的吧
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

if 1 LEQ 1 msg zj /time:5 网络不通,这表示你ping4次只连通一次,就是掉了3次了,不是网络不通是什么
if 1 GEQ 3 msg zj /time:5 网络质量差,表示大于50MS的就是一次,当然不显示质量差了
你自己问题描述:想用批处理ping一个网络ip,连续3个不通判断为掉线了,弹出提示框。连续3个返回值超过50,则判断为网络质量差????难道不是
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

现在对了,怎么回事?我也是复制代码,过去直接粘贴,然后就改了地址,就不行了,这次又可以,就是win7

TOP

返回列表