中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-14 01:21
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求一个长PING一台服务器,如果PING不通则触发一个新的BAT
楼 主 求一个长PING一台服务器,如果PING不通则触发一个新的BAT 发表于 2008-10-05 18:32 ·  中国 四川 成都 联通
新手上路
积分 16
发帖 7
注册 2008-10-05 18:05
UID 127514
性别 男
状态 离线
现在情况是我需要一个BAT,完成长PING一台服务器,如果服务器死掉,或者掉电.PING就不通了, 这个BAT的功能就是如果出现5个包PING不通则触发一个新的BAT文件,如何实现呢,请高手帮助
2 发表于 2008-10-05 18:44 ·  中国 福建 漳州 联通
中级用户
★★
积分 228
发帖 125
注册 2008-08-25 19:17
UID 124135
性别 男
状态 离线
ping -n 5 192.168.1.1 >nul 2>nul
if %ERRORLEVEL% ==0 (
echo PING得通
) else (
echo PING不通
)

具体代码你再自己去加,
3 发表于 2008-10-05 21:33 ·  中国 四川 成都 联通
新手上路
积分 16
发帖 7
注册 2008-10-05 18:05
UID 127514
性别 男
状态 离线
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
4 发表于 2008-10-05 21:58 ·  中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
@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
5 发表于 2008-10-05 22:22 ·  中国 四川 成都 联通
新手上路
积分 16
发帖 7
注册 2008-10-05 18:05
UID 127514
性别 男
状态 离线
Originally posted by HAT at 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 ...



高手你好,现在我测试了你提供的代码~但是我这里运行BAT显示的是ECHO处于关闭状态.不知道是什么原因.能否做到在PING的时候在CMD中显示PING的过程能,就是说PING 对我们是可见的.并且如果启动了新的BAT以后,就不需要再进行PING了

[ Last edited by kal1986 on 2008-10-5 at 22:24 ]
6 发表于 2008-10-05 22:28 ·  中国 海南 海口 电信
初级用户
积分 47
发帖 14
注册 2008-06-30 10:07
UID 120941
性别 男
状态 离线
把@echo off
改成@echo 不就好了?
7 发表于 2008-10-05 23:23 ·  中国 四川 成都 联通
新手上路
积分 16
发帖 7
注册 2008-10-05 18:05
UID 127514
性别 男
状态 离线
Originally posted by landays at 2008-10-5 22:28:
把@echo off
改成@echo 不就好了?



改了 就完全乱了
8 发表于 2008-10-06 00:49 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
代码保存为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
9 发表于 2008-10-06 01:08 ·  中国 四川 成都 联通
新手上路
积分 16
发帖 7
注册 2008-10-05 18:05
UID 127514
性别 男
状态 离线
测试成功 谢谢
10 发表于 2008-10-07 18:17 ·  中国 四川 成都 联通
新手上路
积分 16
发帖 7
注册 2008-10-05 18:05
UID 127514
性别 男
状态 离线
Originally posted by HAT at 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&quo ...



但是现在我发现了个这样的问题~这个PING 不会清零啊 从上面的逻辑来看~我现在要达到的目的是 连续多少次不通才 启动新的BAT,如果叠加了的话,一天丢几个PING 很快就会触发这个BAT了

[ Last edited by kal1986 on 2008-10-7 at 18:19 ]
11 发表于 2008-10-07 20:19 ·  中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
有清零啊
@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
12 发表于 2008-10-08 08:14 ·  中国 四川 成都 联通
新手上路
积分 16
发帖 7
注册 2008-10-05 18:05
UID 127514
性别 男
状态 离线
Originally posted by HAT at 2008-10-7 20:19:
有清零啊

我是这样理解 这个的,因为如果一次PING不通就SET COUNT叠加1次.FOR LOOP
这不是就记数一次了 然后网络有正常了,又有次丢一个包 再叠加次 ,记数又+=1 1次,直到...这样5次后 清零 触发 新的BAT.........那么就被误报了运行新的BAT 哦祸 系统被切换了,结果这是不需要的.不知道我对这串代码的理解正确么.再次谢谢你
13 Re 11楼 发表于 2008-10-08 08:32 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
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
论坛跳转: