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

[网络连接] [暂解决-待测试]批处理如何实现对两个指定服务器检测能否ping通并弹出提示对话框

本帖最后由 ygqiang 于 2016-12-29 21:36 编辑

[暂解决-待测试]先后分别ping测试这2个服务器,看看能否ping通。

请直接跳转到12楼


1、如果同时ping通aa服务器和bbb服务器,就继续运行:next后续代码
2、如果有1个ping不通或者2个都ping不通,就弹出提示对应窗口(比如提示aa服务器网络不通或者bbb服务器网络不通)。
(最好可以设置倒计时10秒后,提示窗口自动关闭)。然后继续分别ping这2个服务器
  1. set yktserv=10.10.11.16
  2. echo aa服务器
  3. set ywserv=192.168.11.119
  4. echo bbb服务器
  5. echo ————————————————————————————  >nul 2>nul
  6. echo aa服务器
  7. :netykt
  8. ping %yktserv% -n 1
  9. echo %errorlevel%
  10. if %errorlevel% equ 1 goto :netykt
  11. ping 127.0.0.1 -n 2
  12. echo ————————————————————————————  >nul 2>nul
  13. echo bbb服务器
  14. :netyw
  15. ping %ywserv% -n 1
  16. echo %errorlevel%
  17. if %errorlevel% equ 1 goto :netyw
  18. ping 127.0.0.1 -n 2
  19. :next
  20. 后续代码
复制代码

本帖最后由 pcl_test 于 2016-12-29 21:43 编辑

回复 8# Nsqs
回复 7# GNU

请教下:

ping某个ip,如果ping通畅,就继续下面代码。
如果不通畅,就间隔20秒一直ping。
然后20分钟后,还是不通,就退出

如果用for循环,可以实现20分钟间隔。
但是ping通畅,也跟着在for循环里面一直ping了。。如何解决?



暂时解决。。。待测试。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set tf=0
  4. echo 循环执行
  5. for /l %%a in (1,1,5) do (
  6. if !tf! equ 1 echo OKtuichu && exit/b
  7. call :start1
  8. ping 127.0.0.1 -n 5 >nul 2>nul
  9. 1pause
  10. )
  11. echo neterror
  12. 1pause
  13. echo 如果网络error,循环检测几次后,就直接退出。
  14. exit
  15. :nextok
  16. mshta vbscript:createobject("wscript.shell").popup("!aa!%a%——————网络正常——————"^&vbCrLf^&"%bb%%b%——————网络正常——————",2,"提示",4096)(window.close)
  17. echo netok
  18. 1pause
  19. set /a tf=1
  20. goto :eof
  21. :start1
  22. set /a n=0
  23. set a=192.168.0.8
  24. set aa=aa服务器
  25. set b=192.168.0.1
  26. set bb=bbb服务器
  27. ping %a% -n 1 >nul 2>nul && set /a n+=1 && goto :aaa||goto :bbb
  28. :aaa
  29. ping %b% -n 1 >nul 2>nul && set /a n+=1 && goto :nextok||call:msg1
  30. if %n% geq 2 goto :nextok
  31. goto :eof
  32. :bbb
  33. ping %b% -n 1 >nul 2>nul && set /a n+=1 && call:msg2||call:msg3
  34. goto :eof
  35. :msg1
  36.     mshta vbscript:createobject("wscript.shell").popup("%aa%%a%——————网络正常——————"^&vbCrLf^&"%bb%%b%!===========网络故障===========",10,"提示",4096)(window.close)
  37. goto :eof
  38. :msg2
  39.     mshta vbscript:createobject("wscript.shell").popup("%aa%%a%!===========网络故障==========="^&vbCrLf^&"%bb%%b%——————网络正常——————",10,"提示",4096)(window.close)
  40. goto :eof
  41. :msg3
  42.     mshta vbscript:createobject("wscript.shell").popup("!aa!!a!===========网络故障==========="^&vbCrLf^&"!bb!!b!===========网络故障===========",10,"提示",4096)(window.close)
  43. goto :eof
复制代码

TOP

回复 10# pcl_test


    可以的。

TOP

回复 9# ygqiang

win7下弹出的提示对话框会自动关闭么

TOP

搞定了。
  1. @echo off
  2. echo 让弹出的窗口,分成上下2行显示
  3. :start1
  4. set /a n=0
  5. set a=192.168.11.16
  6. set aa=aa服务器
  7. set b=192.168.11.119
  8. set bb=bbb服务器
  9. ping %a% -n 1 >nul 2>nul && set /a n+=1 && goto :aaa||goto :bbb
  10. :aaa
  11. ping %b% -n 1 >nul 2>nul && set /a n+=1 && goto :nextok||call:msg1
  12. if %n% geq 2 goto :nextok
  13. goto :start1
  14. :bbb
  15. ping %b% -n 1 >nul 2>nul && set /a n+=1 && call:msg2||call:msg3
  16. if %n% geq 2 goto :nextok
  17. goto :start1
  18. :msg1
  19.     mshta vbscript:createobject("wscript.shell").popup("%aa%%a%网络正常"^&vbCrLf^&"%bb%%b%网络不通...",10,"提示",4096)(window.close)
  20. goto :eof
  21. :msg2
  22.     mshta vbscript:createobject("wscript.shell").popup("%aa%%a%网络不通"^&vbCrLf^&"%bb%%b%网络正常...",10,"提示",4096)(window.close)
  23. goto :eof
  24. :msg3
  25.     mshta vbscript:createobject("wscript.shell").popup("%aa%%a%网络不通"^&vbCrLf^&"%bb%%b%网络不通...",10,"提示",4096)(window.close)
  26. goto :eof
  27. :nextok
  28.     echo ok!
  29. mshta vbscript:createobject("wscript.shell").popup("%aa%%a%网络正常"^&vbCrLf^&"%bb%%b%网络正常...",2,"提示",4096)(window.close)
  30. goto :eof
复制代码

TOP

回复 8# GNU
  1.     @echo off
  2. :r
  3. set /a n=0
  4. set a=10.10.11.16
  5. set b=192.168.11.119
  6. ping %a% -n 1 >nul 2>nul && set /a n+=1||call:msg %a%
  7. ping %b% -n 1 >nul 2>nul && set /a n+=1||call:msg %b%
  8. if %n% geq 2 goto next
  9. goto r
  10. :msg
  11.     start mshta vbscript:createobject("wscript.shell").popup(string(5,chr(13))^&string(40,chr(32))^&"服务器 %1 请求超时..."^&string(60,chr(32))^&string(5,chr(13)),10,"提示",4096)(window.close)
  12. goto :eof
  13. :next
  14.     echo ok!
复制代码
宽度

TOP

回复 7# ygqiang


查了一下文档,popup没有这样的参数。
intButton = object.Popup(strText,[nSecondsToWait],[strTitle],[nType])

TOP

回复 5# ygqiang


    有个小问题。
这个弹出的提示框,能否设置长度、宽度大一些?

TOP

回复 4# Nsqs

不是同时ping,是先后ping,如果至少有一个ping不通,就弹出提示窗口。

TOP

回复 3# ygqiang


    一般严格来讲这种功能已经超出bat处理范围内了,因为bat不支持多线程处理,要同时ping这个问题几乎是不可能的

TOP

回复 2# Nsqs


    多谢。。。能否修改下。

2、如果有1个ping不通或者2个都ping不通,就弹出提示对应窗口。
需要提示下面3种情况:(aa服务器网络不通、bbb服务器网络不通)、(aa服务器网络通、bbb服务器网络不通)(aa服务器网络不通、bbb服务器网络通)
而且要求()内的内容,同时显示在提示窗口内。

TOP

  1. @echo off
  2. :r
  3. set /a n=0
  4. set a=10.10.11.16
  5. set b=192.168.11.119
  6. ping %a% -n 1 >nul 2>nul && set /a n+=1||call:msg %a%
  7. ping %b% -n 1 >nul 2>nul && set /a n+=1||call:msg %b%
  8. if %n% geq 2 goto next
  9. goto r
  10. :msg
  11.     mshta vbscript:createobject("wscript.shell").popup("服务器 %1 请求超时...",10,"提示",4096)(window.close)
  12. goto :eof
  13. :next
  14.     echo ok!
复制代码

TOP

返回列表