Board logo

标题: 求一个长PING一台服务器,如果PING不通则触发一个新的BAT [打印本页]

作者: kal1986     时间: 2008-10-5 18:32    标题: 求一个长PING一台服务器,如果PING不通则触发一个新的BAT

现在情况是我需要一个BAT,完成长PING一台服务器,如果服务器死掉,或者掉电.PING就不通了, 这个BAT的功能就是如果出现5个包PING不通则触发一个新的BAT文件,如何实现呢,请高手帮助

作者: hackate     时间: 2008-10-5 18:44
ping -n 5 192.168.1.1 >nul 2>nul if %ERRORLEVEL% ==0 ( echo PING得通 ) else ( echo PING不通 ) 具体代码你再自己去加,

作者: kal1986     时间: 2008-10-5 21:33
Originally posted by hackate at 2008-10-5 18:44: ping -n 5 192.168.1.1 >nul 2>nul if %ERRORLEVEL% ==0 ( echo PING得通 ) else ( echo PING不通 ) 具体代码你再自己去加,
还是不明白.我PING的地址是10.100.86.200 需要长PING~~~如果PING中出现5次无法PING通就说明服务器出现问题.出现问题了就触发123.BAT 不触发就一直PING

作者: HAT     时间: 2008-10-5 21:58
@echo off
:loop
ping -n 1 10.100.86.200 >nul
if "%errorlevel%" neq "0" (
  set /a count+=1
)
echo %count%
if "%count%" equ "5" (
  set count=0
  start 123.bat
)
goto :loop

作者: kal1986     时间: 2008-10-5 22:22
Originally posted by HAT at 2008-10-5 21:58: [code]@echo off :loop ping -n 1 10.100.86.200 >nul if "%errorlevel%" neq "0" ( set /a count+=1 ) echo %count% if "%count%" equ "5" ( set count ...
高手你好,现在我测试了你提供的代码~但是我这里运行BAT显示的是ECHO处于关闭状态.不知道是什么原因.能否做到在PING的时候在CMD中显示PING的过程能,就是说PING 对我们是可见的.并且如果启动了新的BAT以后,就不需要再进行PING了 [ Last edited by kal1986 on 2008-10-5 at 22:24 ]

作者: landays     时间: 2008-10-5 22:28
把@echo off 改成@echo 不就好了?

作者: kal1986     时间: 2008-10-5 23:23
Originally posted by landays at 2008-10-5 22:28: 把@echo off 改成@echo 不就好了?
改了 就完全乱了

作者: HAT     时间: 2008-10-6 00:49
代码保存为test.bat 双击运行
@echo off
:loop
ping -n 1 10.100.86.200
if "%errorlevel%" neq "0" (
  set /a count+=1
)
if "%count%" equ "5" (
  set count=0
  start 123.bat
)
goto :loop

作者: kal1986     时间: 2008-10-6 01:08
测试成功 谢谢

作者: kal1986     时间: 2008-10-7 18:17
Originally posted by HAT at 2008-10-6 00:49: 代码保存为test.bat 双击运行 [code]@echo off :loop ping -n 1 10.100.86.200 if "%errorlevel%" neq "0" ( set /a count+=1 ) if "%count%" equ "5&quo ...
但是现在我发现了个这样的问题~这个PING 不会清零啊 从上面的逻辑来看~我现在要达到的目的是 连续多少次不通才 启动新的BAT,如果叠加了的话,一天丢几个PING 很快就会触发这个BAT了 [ Last edited by kal1986 on 2008-10-7 at 18:19 ]

作者: HAT     时间: 2008-10-7 20:19
有清零啊
@echo off :loop ping -n 1 10.100.86.200 if "%errorlevel%" neq "0" ( set /a count+=1 ) if "%count%" equ "5" ( set count=0 start 123.bat ) goto :loop

作者: kal1986     时间: 2008-10-8 08:14
Originally posted by HAT at 2008-10-7 20:19: 有清零啊
我是这样理解 这个的,因为如果一次PING不通就SET COUNT叠加1次.FOR LOOP 这不是就记数一次了 然后网络有正常了,又有次丢一个包 再叠加次 ,记数又+=1 1次,直到...这样5次后 清零 触发 新的BAT.........那么就被误报了运行新的BAT 哦祸 系统被切换了,结果这是不需要的.不知道我对这串代码的理解正确么.再次谢谢你

作者: HAT     时间: 2008-10-8 08:32    标题: Re 11楼

Try this:
@echo off
:loop
ping -n 1 10.100.86.200
if "%errorlevel%" neq "0" (
  set /a count+=1
) else (
  set count=0
)
if "%count%" equ "5" (
  set count=0
  start 123.bat
)
goto :loop