中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-08 04:17
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [讨论]ping 的高级功能 查看 1,418 回复 11
楼 主 [讨论]ping 的高级功能 发表于 2009-11-05 16:43 ·  中国 上海 电信
初级用户
★★
积分 75
发帖 75
注册 2009-10-23 10:23
16年会员
UID 153553
性别 男
状态 离线
ping或别的什么dos命令,

可以一直ping,直接对方计算机ping通后再执行下一个命令,不需要手工参与
2 发表于 2009-11-06 10:24 ·  中国 湖南 长沙 电信
新手上路
积分 16
发帖 15
注册 2009-10-02 20:17
16年会员
UID 152549
性别 男
状态 离线
@echo off
rem 要ping 的ip
set ip=192.168.1.3
:pingip
FOR /F "DELIMS=" %%L IN ('ping %ip% -n 1') DO (
ECHO.%%L | find /i "ms" 2>nul&& goto eof)
@echo ping不通,重试
goto pingip
:eof
echo ping通,继续
pause

[ Last edited by ccyyxxx on 2009-11-6 at 10:34 ]
3 发表于 2009-11-06 13:33 ·  中国 福建 厦门 电信
初级用户
积分 24
发帖 17
注册 2009-10-07 20:28
16年会员
UID 152733
性别 男
状态 离线
直接用%errorlevel%来判断就行了
4 发表于 2009-11-06 20:15 ·  中国 湖南 长沙 联通
新手上路
积分 16
发帖 15
注册 2009-10-02 20:17
16年会员
UID 152549
性别 男
状态 离线
Originally posted by lincc0519 at 2009-11-6 13:33:
直接用%errorlevel%来判断就行了


不知道那个算错误信息...
长知识了
那可以写成这样
@set ip=www.qq.com
:IP
@ping %ip% -n 1 >NUL ||(@ECHO 不通 & GOTO IP)
@ECHO 通&PAUSE>nul
5 发表于 2009-11-06 23:26 ·  中国 浙江 杭州 阿里云
初级用户
积分 24
发帖 17
注册 2009-10-07 20:28
16年会员
UID 152733
性别 男
状态 离线
你那个不行的,||是前面的命令失败后才执行后面的命令,你那句不管通不通都会是命令执行成功,用if来判断%errorlevel%值就可以看成不成功,如果%errorlevel%等于0就成功如果等于1就不成功,用%errorlevel%可以判断很多命令的错误值,这样就不用for去提取那些信息了,对了还要分是中文还是英文的。
6 发表于 2009-11-07 08:48 ·  中国 湖南 长沙 电信
新手上路
积分 16
发帖 15
注册 2009-10-02 20:17
16年会员
UID 152549
性别 男
状态 离线
Originally posted by lincc0519 at 2009-11-6 23:26:
你那个不行的,||是前面的命令失败后才执行后面的命令,你那句不管通不通都会是命令执行成功,用if来判断%errorlevel%值就可以看成不成功,如果%err ...


是啊,不通就运行||后的命令,通就不运行||后的命令
通了就跳过goto ip了
经测试,是可行的
7 发表于 2009-11-09 11:22 ·  中国 上海 电信
初级用户
★★
积分 75
发帖 75
注册 2009-10-23 10:23
16年会员
UID 153553
性别 男
状态 离线
谢谢两位,我是这样写的

@echo off
cls
set /p pc=输入计算机名称:

:testIP
ping -a %pc% -n 1 >nul
if %ERRORLEVEL%==1 goto :testIP

:start
ECHO 通了



现又出了一个问题,这个命令我是打算这样用在局域网的,
先用远程开机命令开机,然后就开始ping,ping通说明开机启动好了,再就可以开始远程管理一系列的事情了。

问题就如机器故障总不能一直Ping下去吧,就死循环了,要有点容错能力,一般开机20秒应该差不多了,怎么让ping对一台机器执行20秒,还没通的话就开始操作下一台电脑
8 发表于 2009-11-09 19:37 ·  中国 湖南 长沙 联通
新手上路
积分 16
发帖 15
注册 2009-10-02 20:17
16年会员
UID 152549
性别 男
状态 离线
@echo off
cls
:ip
set /p pc=输入计算机名称:

set n=0
:testIP
ping -a %pc% -n 1 >nul
if %ERRORLEVEL%==1 (set /a n+=1
if %n%==20 goto :超时
goto :testIP)

:start
ECHO 通了
goto startpro

:超时
ECHO 超时
goto ip

:startpro

[ Last edited by ccyyxxx on 2009-11-9 at 19:39 ]
9 发表于 2009-11-23 17:52 ·  中国 福建 福州 电信
初级用户
★★
积分 119
发帖 59
注册 2008-11-21 14:07
17年会员
UID 131656
性别 男
状态 离线
这个命令不错学习了。
10 发表于 2009-11-30 15:18 ·  中国 北京 联通
初级用户
积分 39
发帖 27
注册 2007-09-10 17:46
18年会员
UID 97038
性别 男
状态 离线
学习了,不过还得学习下set的用法才好呀
11 发表于 2009-12-30 23:11 ·  中国 陕西 西安 电信
初级用户
积分 28
发帖 16
注册 2005-12-26 17:27
20年会员
UID 47914
状态 离线
学习一下!以后用的上!
12 发表于 2009-12-31 04:29 ·  中国 福建 宁德 电信
新手上路
积分 11
发帖 8
注册 2009-11-01 16:58
16年会员
UID 153996
性别 男
来自 福建
状态 离线
学习了
如果这一切只是童话~~~
论坛跳转: