Board logo

标题: [网络连接] 批处理怎么实现ping不通ip则运行某程序? [打印本页]

作者: l0314074    时间: 2013-7-30 10:29     标题: 批处理怎么实现ping不通ip则运行某程序?

本帖最后由 pcl_test 于 2016-7-14 21:19 编辑

批处理实现:一直ping 路由器ip如果不通就运行start.bat网上给的没用 系统是xp的
  1. @ECHO OFF
  2. :a
  3. SET /a n=0
  4. FOR /l %%i in (1,1,4) do (
  5. ping -n 1 192.168.0.245>nul
  6. if %errorlevel% EQU 1 (SET /a n+=1)
  7. )
  8. IF %n% EQU 4 (START start.bat&GOTO a) else (GOTO a)
  9. PAUSE
复制代码

作者: batman    时间: 2013-7-30 10:50

本帖最后由 batman 于 2013-7-30 12:58 编辑
  1. @echo off
  2. :lp
  3. for /l %%a in (1,1,4) do ping /n 1 192.168.0.245>nul&&goto lp
  4. start start.bat&goto lp
复制代码

作者: 522235677    时间: 2013-7-30 17:28

本帖最后由 522235677 于 2013-7-30 17:33 编辑
  1. :loop
  2. ping 192.168.0.245 -n 1 >nul
  3. if errorlevel 1 start "" start.bat&exit
  4. goto loop
复制代码
这个是只要ping不通就立马打开那个bat
  1. set a=0
  2. :loop
  3. ping 192.168.0.245 -n 1 >nul
  4. if errorlevel 1 (set /a a+=1) else (if not "%a%"=="0" set a=0)
  5. if "%a%"=="4" start "" start.bat&exit
  6. goto loop
复制代码
这个是如果连续4次没有ping通路由就打开你那bat,这个你自己测试一下
作者: PowerShell    时间: 2013-7-31 18:52

本帖最后由 PowerShell 于 2013-7-31 18:54 编辑

powershell 内置的ping叫做 Test-Connection

它有个参数
-Quiet
禁止显示所有的错误,并且若有任何 ping 成功则返回 $True,全部失败则返回 $False。
这样的话,代码写起来就简单了
  1. if ( Test-Connection 192.168.0.1 -Quiet )
  2. {
  3.    echo "通了"
  4. #你不觉得这代码简洁直观么?
  5. }
  6. else
  7. {
  8. echo "没通"
  9. # 这里还可以做点啥
  10. }
复制代码
当然if那个括号里还可以加上Test-Connection 其他的 参数,如延时,如ping多少次。ping多大的包。
作者: 523066680    时间: 2013-7-31 19:20

用 ||管道
ping -n 1 地址>nul || echo 没ping通
作者: guaiwu    时间: 2013-7-31 22:56

回复 2# batman


    管理员,我有点不理解,既然是测试如果ping不通的话就启动start.bat,为何启动了start.bat后还需要加“&goto lp”?
这样不会使程序死循环了吗?
作者: batman    时间: 2013-8-1 08:09

回复 6# guaiwu


    这个你要问楼主,因为他顶楼的代码的逻辑就是这样的,我是按照他的逻辑来写的




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2