[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[网络连接] 批处理怎么实现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 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
复制代码
***共同提高***

TOP

本帖最后由 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,这个你自己测试一下

TOP

本帖最后由 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多大的包。
脚本是写给人看的,是写给用户看的,而不是写给机子看的
用户能看懂、会修改的脚本,才是好脚本。
写易懂的powershell脚本帮人解决问题,进而让用户学会自渔,吾所愿也

TOP

用 ||管道
ping -n 1 地址>nul || echo 没ping通

TOP

回复 2# batman


    管理员,我有点不理解,既然是测试如果ping不通的话就启动start.bat,为何启动了start.bat后还需要加“&goto lp”?
这样不会使程序死循环了吗?
莫求昨天无悔,但愿今日无愧。

TOP

回复 6# guaiwu


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

TOP

返回列表