标题: [网络连接] 【已解决】请教完善批处理根据PING的结果判断是否报警? [打印本页]
作者: bobgjs 时间: 2009-3-18 10:15 标题: 【已解决】请教完善批处理根据PING的结果判断是否报警?
- @echo off
- :loop0
- ping -n 2 www.163.com|findstr /i /c:"Request timed out"
- if %errorlevel%==0 (set /a count+=1&goto loop1)
- goto loop0
- :loop1
- echo
- goto loop0
复制代码
以上部份是拼不通的时候叫五声,我想如何能判断拼的延时大时报警。比如:
Reply from 192.168.0.1: bytes=32 time=1ms TTL=128
如果time等于或大于100ms则报警,该代码应如何更改呢?
全天在线等待帮助。
[ 本帖最后由 bobgjs 于 2009-3-20 13:11 编辑 ]
作者: qq362220083 时间: 2009-3-18 14:56
- @echo off
- setlocal ENABLEDELAYEDEXPANSION
- set ipadd=192.168.80.0
-
- :goon
- :::::::::::::::::::::::::::获取回显的响应时间,类似于 time=123ms::::::::::::::::::::::::::::::
- for /f "skip=3 tokens=5" %%a in ('ping.exe %ipadd% -n 1 ^|findstr /i /c:"Reply from"') do (
- set t=%%a
- goto :test
- )
- :::::::::::::::::::::::::::::若上述for条件为否,视为不通,跳转到报警1,否则跳转到test,分析响应时间::::::::::::::::::::
- goto :报警1
- ::::::::::::::::::::::::::::下面的第一句,忽略掉time=123ms 的前5个字符,剩下123ms
- ::::::::::::::::::::::::::::第二句,替换ms为空,这样就剩下响应时间了
- ::::::::::::::::::::::::::::判断响应时间是否大于等于2(为了测试方便,调的比较小,而且IP是非法IP,呵呵),成立,跳转到报警2
- ::::::::::::::::::::::::::::若不成立,跳转到goon小节运行
- :test
- set t=!t:~5!
- set t=!t:ms=!
- if !t! GEQ 2 (goto :报警2)
- :::::::::::::::::::::::::::::::::::::::::::此处已更新! 09-3-20 0时1分
- goto :goon
-
- :报警1
- echo.网络不通哦,是不是该Ping 127.1 呢?
- pause>nul
- goto :goon
-
- :报警2
- echo.叫吧,使劲地叫唤!
- pause>nul
- goto :goon
复制代码
若要检测响应时间,你的就需要大改了,至少使用for /f捕获结果,然后过滤结果中无关字符,留下响应时间。
[ 本帖最后由 qq362220083 于 2009-3-20 00:02 编辑 ]
作者: bobgjs 时间: 2009-3-18 15:33
若要检测响应时间,你的就需要大改了,至少使用for /f捕获结果,然后过滤结果中无关字符,留下响应时间。
谢谢楼上兄台帮助,就我那几行便可报警了。
小的只是希望能够解决“延时等于或大于100ms时报警”,继续期待中……
作者: Batcher 时间: 2009-3-18 15:52 标题: 回复 3楼 的帖子
2楼不是给代码了么,你还在期待什么?
作者: bobgjs 时间: 2009-3-18 16:18
我是菜刀,如果不嫌麻烦,请帮我解释一下。此代码在PING某一IP时,延时达到100MS以上就报警,在哪里体现?
作者: Batcher 时间: 2009-3-18 16:20 标题: 回复 5楼 的帖子
if !t! GEQ 2 (goto :报警1)
把2改成100不行么?
作者: bobgjs 时间: 2009-3-18 17:45
感谢!
真诚的感谢!
谢谢你给予我的帮助,希望这个问题也帮助了其他的朋友。
再次感谢热心的qq362220083与Batcher。
作者: bobgjs 时间: 2009-3-18 17:57
只是执行的结果永远都是
(goto :报警1)
我再看看吧
作者: qq362220083 时间: 2009-3-18 19:22
若你没有修改IP地址,那么结果就是永远报警1
因为在开头定义的IP地址是192.168.80.0,这个IP并不是合法的IP,当然永远也不会通的。呵呵,根据你自身的需要,修改开头定义的 set ipadd=需要测试的IP地址或域名
然后修改超时时间,我测试的是2,你可以根据你的要求,修改为100
作者: bobgjs 时间: 2009-3-19 09:40
原帖由 qq362220083 于 2009-3-18 19:22 发表
若你没有修改IP地址,那么结果就是永远报警1
因为在开头定义的IP地址是192.168.80.0,这个IP并不是合法的IP,当然永远也不会通的。呵呵,根据你自身的需要,修改开头定义的 set ipadd=需要测试的IP地址或域名
然 ...
我已将它改为:- @echo off
- setlocal ENABLEDELAYEDEXPANSION
- set ipadd=61.135.253.9
-
- :goon
- for /f "skip=3 tokens=5" %%a in ('ping.exe %ipadd% -n 1 ^|findstr /i /c:"Reply from"') do (
- set t=%%a
- goto :test
- )
- goto :报警1
-
- :test
- set t=!t:~5!
- set t=!t:ms=!
- if !t! GEQ 50 (goto :报警1)
- goto :goon
-
- :报警1
- echo
- pause
- goto :goon
-
- :报警2
- echo
- echo
-
- pause
- goto :goon
复制代码
但真的不行,如果去掉pause,它就真的是叫个不停了。
作者: qq362220083 时间: 2009-3-20 00:00 标题: 回复 10楼 的帖子
Sorry,一时手误,把- :test
- set t=!t:~5!
- set t=!t:ms=!
- if !t! GEQ 50 (goto :报警2)
- goto :goon
复制代码
的跳转打成 报警1 了,对此确实是我的失误,给大家带来不便请谅解,我马上更新
[ 本帖最后由 qq362220083 于 2009-3-20 00:19 编辑 ]
作者: bobgjs 时间: 2009-3-20 10:57
qq362220083 谢谢你那么晚了还在帮助我,我把IP改成127.0.0.1也不成,仍然是“报警1”
作者: bobgjs 时间: 2009-3-20 11:54
终于,我想了另一种方式把它解决了。
感谢大家的帮助,也希望能帮助上其他的朋友。- @echo off
- :000
- for /f "tokens=4 delims==" %%a in ('ping -n 2 www.163.com') do (
- set time=%%a
- )
- set time=%time:~1,-3%
- echo %time%
- if %time% GEQ 20 (goto pl)
- goto 000
- )
- :pl
- echo
- goto 000
复制代码
作者: Batcher 时间: 2009-3-20 12:56
建议:
1、使用代码缩进
2、使用有意义的标签名称
3、给goto后的标签加上冒号
4、不要使用与系统变量同名的自定义变量- @echo off
- :LoopPing
- for /f "tokens=4 delims==" %%a in ('ping -n 2 www.163.com') do (
- set ReplyTime=%%a
- )
- set ReplyTime=%ReplyTime:~1,-3%
- echo %ReplyTime%
- if %ReplyTime% GEQ 20 (
- goto :Alert
- ) else(
- goto :LoopPing
- )
- :Alert
- echo
- goto :LoopPing
复制代码
作者: tieyiren 时间: 2013-5-13 23:32
这个学习了,记号
作者: pict 时间: 2013-6-12 23:08
为什么我复制代码到记事本里面,:报警1
echo
pause
goto :goon
作者: pict 时间: 2013-6-12 23:10
为什么我复制代码到记事本里面
***************1
echo
pause
goto :goon
:报警2
echo
echo
**************
在每个echo后面都有几个方框是什么情况,怎么打上去
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |