标题: [讨论]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
学习了