|
kal1986
新手上路
积分 16
发帖 7
注册 2008-10-5
状态 离线
|
『楼 主』:
求一个长PING一台服务器,如果PING不通则触发一个新的BAT
现在情况是我需要一个BAT,完成长PING一台服务器,如果服务器死掉,或者掉电.PING就不通了, 这个BAT的功能就是如果出现5个包PING不通则触发一个新的BAT文件,如何实现呢,请高手帮助
|
|
2008-10-5 18:32 |
|
|
hackate
中级用户
积分 228
发帖 125
注册 2008-8-25
状态 离线
|
『第
2 楼』:
ping -n 5 192.168.1.1 >nul 2>nul
if %ERRORLEVEL% ==0 (
echo PING得通
) else (
echo PING不通
)
具体代码你再自己去加,
|
|
2008-10-5 18:44 |
|
|
kal1986
新手上路
积分 16
发帖 7
注册 2008-10-5
状态 离线
|
『第
3 楼』:
Quote: | 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
|
|
2008-10-5 21:33 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『第
4 楼』:
@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
|
|
|
2008-10-5 21:58 |
|
|
kal1986
新手上路
积分 16
发帖 7
注册 2008-10-5
状态 离线
|
『第
5 楼』:
Quote: | 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 ]
|
|
2008-10-5 22:22 |
|
|
landays
初级用户
积分 47
发帖 14
注册 2008-6-30
状态 离线
|
『第
6 楼』:
把@echo off
改成@echo 不就好了?
|
|
2008-10-5 22:28 |
|
|
kal1986
新手上路
积分 16
发帖 7
注册 2008-10-5
状态 离线
|
『第
7 楼』:
Quote: | Originally posted by landays at 2008-10-5 22:28:
把@echo off
改成@echo 不就好了? |
|
改了 就完全乱了
|
|
2008-10-5 23:23 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『第
8 楼』:
代码保存为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
|
|
|
2008-10-6 00:49 |
|
|
kal1986
新手上路
积分 16
发帖 7
注册 2008-10-5
状态 离线
|
|
2008-10-6 01:08 |
|
|
kal1986
新手上路
积分 16
发帖 7
注册 2008-10-5
状态 离线
|
『第
10 楼』:
Quote: | 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 ]
|
|
2008-10-7 18:17 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『第
11 楼』:
有清零啊
Quote: | @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 |
|
|
|
|
2008-10-7 20:19 |
|
|
kal1986
新手上路
积分 16
发帖 7
注册 2008-10-5
状态 离线
|
『第
12 楼』:
Quote: | Originally posted by HAT at 2008-10-7 20:19:
有清零啊
|
|
我是这样理解 这个的,因为如果一次PING不通就SET COUNT叠加1次.FOR LOOP
这不是就记数一次了 然后网络有正常了,又有次丢一个包 再叠加次 ,记数又+=1 1次,直到...这样5次后 清零 触发 新的BAT.........那么就被误报了运行新的BAT 哦祸 系统被切换了,结果这是不需要的.不知道我对这串代码的理解正确么.再次谢谢你
|
|
2008-10-8 08:14 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『第
13 楼』:
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
|
|
|
2008-10-8 08:32 |
|