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

[网络连接] 【已解决】请教完善批处理根据PING的结果判断是否报警?

  1. @echo off
  2. :loop0
  3. ping -n 2 www.163.com|findstr /i /c:"Request timed out"
  4. if %errorlevel%==0 (set /a count+=1&goto loop1)
  5. goto loop0
  6. :loop1
  7. echo 
  8. goto loop0
复制代码
以上部份是拼不通的时候叫五声,我想如何能判断拼的延时大时报警。比如:
Reply from 192.168.0.1: bytes=32 time=1ms TTL=128
如果time等于或大于100ms则报警,该代码应如何更改呢?
全天在线等待帮助。

[ 本帖最后由 bobgjs 于 2009-3-20 13:11 编辑 ]

为什么我复制代码到记事本里面
***************1
echo 
pause
goto :goon

:报警2
echo 
echo 
**************
在每个echo后面都有几个方框是什么情况,怎么打上去

TOP

为什么我复制代码到记事本里面,:报警1
echo 
pause
goto :goon

TOP

这个学习了,记号

TOP

建议:
1、使用代码缩进
2、使用有意义的标签名称
3、给goto后的标签加上冒号
4、不要使用与系统变量同名的自定义变量
  1. @echo off
  2. :LoopPing
  3. for /f "tokens=4 delims==" %%a in ('ping -n 2 www.163.com') do (
  4.   set ReplyTime=%%a
  5. )
  6. set ReplyTime=%ReplyTime:~1,-3%
  7. echo %ReplyTime%
  8. if %ReplyTime% GEQ 20 (
  9.   goto :Alert
  10. ) else(
  11.   goto :LoopPing
  12. )
  13. :Alert
  14. echo 
  15. goto :LoopPing
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

终于,我想了另一种方式把它解决了。
感谢大家的帮助,也希望能帮助上其他的朋友。
  1. @echo off
  2. :000
  3. for /f "tokens=4 delims==" %%a in ('ping -n 2 www.163.com') do (
  4. set time=%%a
  5. )
  6. set time=%time:~1,-3%
  7. echo %time%
  8. if %time% GEQ 20 (goto pl)
  9. goto 000
  10. )
  11. :pl
  12. echo 
  13. goto 000
复制代码

TOP

qq362220083 谢谢你那么晚了还在帮助我,我把IP改成127.0.0.1也不成,仍然是“报警1”

TOP

回复 10楼 的帖子

Sorry,一时手误,把
  1. :test
  2. set t=!t:~5!
  3. set t=!t:ms=!
  4. if !t! GEQ 50 (goto :报警2)
  5. goto :goon
复制代码
的跳转打成 报警1 了,对此确实是我的失误,给大家带来不便请谅解,我马上更新

[ 本帖最后由 qq362220083 于 2009-3-20 00:19 编辑 ]
当一个人不断追问的时候,其实就已经对自己产生了怀疑

TOP

原帖由 qq362220083 于 2009-3-18 19:22 发表
若你没有修改IP地址,那么结果就是永远报警1

因为在开头定义的IP地址是192.168.80.0,这个IP并不是合法的IP,当然永远也不会通的。呵呵,根据你自身的需要,修改开头定义的 set ipadd=需要测试的IP地址或域名
然 ...

我已将它改为:
  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION
  3. set ipadd=61.135.253.9
  4. :goon
  5. for /f "skip=3 tokens=5" %%a in ('ping.exe %ipadd% -n 1 ^|findstr /i /c:"Reply from"') do (
  6. set t=%%a
  7. goto :test
  8. )
  9. goto :报警1
  10. :test
  11. set t=!t:~5!
  12. set t=!t:ms=!
  13. if !t! GEQ 50 (goto :报警1)
  14. goto :goon
  15. :报警1
  16. echo 
  17. pause
  18. goto :goon
  19. :报警2
  20. echo 
  21. echo 
  22. pause
  23. goto :goon
复制代码
但真的不行,如果去掉pause,它就真的是叫个不停了。

TOP

若你没有修改IP地址,那么结果就是永远报警1

因为在开头定义的IP地址是192.168.80.0,这个IP并不是合法的IP,当然永远也不会通的。呵呵,根据你自身的需要,修改开头定义的 set ipadd=需要测试的IP地址或域名
然后修改超时时间,我测试的是2,你可以根据你的要求,修改为100
当一个人不断追问的时候,其实就已经对自己产生了怀疑

TOP

只是执行的结果永远都是
(goto :报警1)
我再看看吧

TOP

感谢!
真诚的感谢!
谢谢你给予我的帮助,希望这个问题也帮助了其他的朋友。
再次感谢热心的qq362220083与Batcher。

TOP

回复 5楼 的帖子

if !t! GEQ 2 (goto :报警1)
把2改成100不行么?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

我是菜刀,如果不嫌麻烦,请帮我解释一下。此代码在PING某一IP时,延时达到100MS以上就报警,在哪里体现?

TOP

回复 3楼 的帖子

2楼不是给代码了么,你还在期待什么?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表