Board logo

标题: [讨论]ping 的高级功能 [打印本页]

作者: czweb     时间: 2009-11-5 16:43    标题: [讨论]ping 的高级功能

ping或别的什么dos命令,

可以一直ping,直接对方计算机ping通后再执行下一个命令,不需要手工参与
作者: ccyyxxx     时间: 2009-11-6 10:24
@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 ]
作者: lincc0519     时间: 2009-11-6 13:33
直接用%errorlevel%来判断就行了
作者: ccyyxxx     时间: 2009-11-6 20:15


  Quote:
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
作者: lincc0519     时间: 2009-11-6 23:26
你那个不行的,||是前面的命令失败后才执行后面的命令,你那句不管通不通都会是命令执行成功,用if来判断%errorlevel%值就可以看成不成功,如果%errorlevel%等于0就成功如果等于1就不成功,用%errorlevel%可以判断很多命令的错误值,这样就不用for去提取那些信息了,对了还要分是中文还是英文的。
作者: ccyyxxx     时间: 2009-11-7 08:48


  Quote:
Originally posted by lincc0519 at 2009-11-6 23:26:
你那个不行的,||是前面的命令失败后才执行后面的命令,你那句不管通不通都会是命令执行成功,用if来判断%errorlevel%值就可以看成不成功,如果%err ...

是啊,不通就运行||后的命令,通就不运行||后的命令
通了就跳过goto ip了
经测试,是可行的
作者: czweb     时间: 2009-11-9 11:22
谢谢两位,我是这样写的
@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秒,还没通的话就开始操作下一台电脑
作者: ccyyxxx     时间: 2009-11-9 19:37
@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 ]
作者: wuchan     时间: 2009-11-23 17:52
这个命令不错学习了。
作者: bjjgq     时间: 2009-11-30 15:18
学习了,不过还得学习下set的用法才好呀
作者: heixing     时间: 2009-12-30 23:11
学习一下!以后用的上!
作者: CopyFile     时间: 2009-12-31 04:29
学习了