标题: [网络连接] 批处理怎么实现ping不通ip则运行某程序? [打印本页]
作者: l0314074 时间: 2013-7-30 10:29 标题: 批处理怎么实现ping不通ip则运行某程序?
本帖最后由 pcl_test 于 2016-7-14 21:19 编辑
批处理实现:一直ping 路由器ip如果不通就运行start.bat网上给的没用 系统是xp的- @ECHO OFF
- :a
- SET /a n=0
- FOR /l %%i in (1,1,4) do (
- ping -n 1 192.168.0.245>nul
- if %errorlevel% EQU 1 (SET /a n+=1)
- )
- IF %n% EQU 4 (START start.bat&GOTO a) else (GOTO a)
- PAUSE
复制代码
作者: batman 时间: 2013-7-30 10:50
本帖最后由 batman 于 2013-7-30 12:58 编辑
- @echo off
- :lp
- for /l %%a in (1,1,4) do ping /n 1 192.168.0.245>nul&&goto lp
- start start.bat&goto lp
复制代码
作者: 522235677 时间: 2013-7-30 17:28
本帖最后由 522235677 于 2013-7-30 17:33 编辑
- :loop
- ping 192.168.0.245 -n 1 >nul
- if errorlevel 1 start "" start.bat&exit
- goto loop
复制代码
这个是只要ping不通就立马打开那个bat- set a=0
- :loop
- ping 192.168.0.245 -n 1 >nul
- if errorlevel 1 (set /a a+=1) else (if not "%a%"=="0" set a=0)
- if "%a%"=="4" start "" start.bat&exit
- 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。
这样的话,代码写起来就简单了- if ( Test-Connection 192.168.0.1 -Quiet )
- {
- echo "通了"
- #你不觉得这代码简洁直观么?
- }
- else
- {
- echo "没通"
- # 这里还可以做点啥
- }
复制代码
当然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 |