标题: [网络连接] [暂解决-待测试]批处理如何实现对两个指定服务器检测能否ping通并弹出提示对话框 [打印本页]
作者: ygqiang 时间: 2016-12-27 08:45 标题: [暂解决-待测试]批处理如何实现对两个指定服务器检测能否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个服务器- set yktserv=10.10.11.16
- echo aa服务器
-
- set ywserv=192.168.11.119
- echo bbb服务器
-
-
- echo ———————————————————————————— >nul 2>nul
- echo aa服务器
- :netykt
- ping %yktserv% -n 1
- echo %errorlevel%
- if %errorlevel% equ 1 goto :netykt
-
- ping 127.0.0.1 -n 2
-
-
-
-
- echo ———————————————————————————— >nul 2>nul
- echo bbb服务器
- :netyw
- ping %ywserv% -n 1
- echo %errorlevel%
- if %errorlevel% equ 1 goto :netyw
-
- ping 127.0.0.1 -n 2
-
-
-
- :next
- 后续代码
复制代码
作者: Nsqs 时间: 2016-12-27 09:20
- @echo off
- :r
- set /a n=0
- set a=10.10.11.16
- set b=192.168.11.119
- ping %a% -n 1 >nul 2>nul && set /a n+=1||call:msg %a%
- ping %b% -n 1 >nul 2>nul && set /a n+=1||call:msg %b%
- if %n% geq 2 goto next
- goto r
-
- :msg
- mshta vbscript:createobject("wscript.shell").popup("服务器 %1 请求超时...",10,"提示",4096)(window.close)
- goto :eof
-
- :next
- echo ok!
复制代码
作者: ygqiang 时间: 2016-12-27 09:34
回复 2# Nsqs
多谢。。。能否修改下。
2、如果有1个ping不通或者2个都ping不通,就弹出提示对应窗口。
需要提示下面3种情况:(aa服务器网络不通、bbb服务器网络不通)、(aa服务器网络通、bbb服务器网络不通)(aa服务器网络不通、bbb服务器网络通)
而且要求()内的内容,同时显示在提示窗口内。
作者: Nsqs 时间: 2016-12-27 09:37
回复 3# ygqiang
一般严格来讲这种功能已经超出bat处理范围内了,因为bat不支持多线程处理,要同时ping这个问题几乎是不可能的
作者: ygqiang 时间: 2016-12-27 09:42
回复 4# Nsqs
不是同时ping,是先后ping,如果至少有一个ping不通,就弹出提示窗口。
作者: ygqiang 时间: 2016-12-27 10:14
回复 5# ygqiang
有个小问题。
这个弹出的提示框,能否设置长度、宽度大一些?
作者: GNU 时间: 2016-12-27 13:12
回复 7# ygqiang
查了一下文档,popup没有这样的参数。
intButton = object.Popup(strText,[nSecondsToWait],[strTitle],[nType])
作者: Nsqs 时间: 2016-12-27 14:05
回复 8# GNU - @echo off
- :r
- set /a n=0
- set a=10.10.11.16
- set b=192.168.11.119
- ping %a% -n 1 >nul 2>nul && set /a n+=1||call:msg %a%
- ping %b% -n 1 >nul 2>nul && set /a n+=1||call:msg %b%
- if %n% geq 2 goto next
- goto r
-
- :msg
- 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)
- goto :eof
-
- :next
- echo ok!
复制代码
宽度
作者: ygqiang 时间: 2016-12-28 10:20
搞定了。- @echo off
- echo 让弹出的窗口,分成上下2行显示
-
- :start1
-
-
- set /a n=0
- set a=192.168.11.16
- set aa=aa服务器
- set b=192.168.11.119
- set bb=bbb服务器
-
-
-
-
- ping %a% -n 1 >nul 2>nul && set /a n+=1 && goto :aaa||goto :bbb
-
-
- :aaa
- ping %b% -n 1 >nul 2>nul && set /a n+=1 && goto :nextok||call:msg1
-
- if %n% geq 2 goto :nextok
- goto :start1
-
-
- :bbb
- ping %b% -n 1 >nul 2>nul && set /a n+=1 && call:msg2||call:msg3
-
-
- if %n% geq 2 goto :nextok
- goto :start1
-
-
-
-
-
- :msg1
- mshta vbscript:createobject("wscript.shell").popup("%aa%%a%网络正常"^&vbCrLf^&"%bb%%b%网络不通...",10,"提示",4096)(window.close)
- goto :eof
-
- :msg2
- mshta vbscript:createobject("wscript.shell").popup("%aa%%a%网络不通"^&vbCrLf^&"%bb%%b%网络正常...",10,"提示",4096)(window.close)
- goto :eof
-
- :msg3
- mshta vbscript:createobject("wscript.shell").popup("%aa%%a%网络不通"^&vbCrLf^&"%bb%%b%网络不通...",10,"提示",4096)(window.close)
- goto :eof
-
-
-
- :nextok
- echo ok!
- mshta vbscript:createobject("wscript.shell").popup("%aa%%a%网络正常"^&vbCrLf^&"%bb%%b%网络正常...",2,"提示",4096)(window.close)
-
- goto :eof
复制代码
作者: pcl_test 时间: 2016-12-28 12:46
回复 9# ygqiang
win7下弹出的提示对话框会自动关闭么
作者: ygqiang 时间: 2016-12-28 15:57
回复 10# pcl_test
可以的。
作者: ygqiang 时间: 2016-12-29 20:03
本帖最后由 pcl_test 于 2016-12-29 21:43 编辑
回复 8# Nsqs
回复 7# GNU
请教下:
ping某个ip,如果ping通畅,就继续下面代码。
如果不通畅,就间隔20秒一直ping。
然后20分钟后,还是不通,就退出
如果用for循环,可以实现20分钟间隔。
但是ping通畅,也跟着在for循环里面一直ping了。。如何解决?
暂时解决。。。待测试。- @echo off
- setlocal enabledelayedexpansion
-
- set tf=0
-
- echo 循环执行
-
- for /l %%a in (1,1,5) do (
-
- if !tf! equ 1 echo OKtuichu && exit/b
-
- call :start1
- ping 127.0.0.1 -n 5 >nul 2>nul
-
- 1pause
- )
-
- echo neterror
- 1pause
- echo 如果网络error,循环检测几次后,就直接退出。
-
- exit
-
-
-
- :nextok
- mshta vbscript:createobject("wscript.shell").popup("!aa!%a%——————网络正常——————"^&vbCrLf^&"%bb%%b%——————网络正常——————",2,"提示",4096)(window.close)
- echo netok
- 1pause
-
- set /a tf=1
- goto :eof
-
-
- :start1
-
- set /a n=0
- set a=192.168.0.8
- set aa=aa服务器
- set b=192.168.0.1
- set bb=bbb服务器
-
- ping %a% -n 1 >nul 2>nul && set /a n+=1 && goto :aaa||goto :bbb
-
- :aaa
- ping %b% -n 1 >nul 2>nul && set /a n+=1 && goto :nextok||call:msg1
-
- if %n% geq 2 goto :nextok
- goto :eof
-
- :bbb
- ping %b% -n 1 >nul 2>nul && set /a n+=1 && call:msg2||call:msg3
- goto :eof
-
- :msg1
- mshta vbscript:createobject("wscript.shell").popup("%aa%%a%——————网络正常——————"^&vbCrLf^&"%bb%%b%!===========网络故障===========",10,"提示",4096)(window.close)
- goto :eof
-
- :msg2
- mshta vbscript:createobject("wscript.shell").popup("%aa%%a%!===========网络故障==========="^&vbCrLf^&"%bb%%b%——————网络正常——————",10,"提示",4096)(window.close)
- goto :eof
-
- :msg3
- mshta vbscript:createobject("wscript.shell").popup("!aa!!a!===========网络故障==========="^&vbCrLf^&"!bb!!b!===========网络故障===========",10,"提示",4096)(window.close)
- goto :eof
复制代码
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |