找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 32602|回复: 3

[网络连接] 批处理如何获取ping命令返回结果中的byte参数值?

[复制链接]
发表于 2012-9-11 17:38:06 | 显示全部楼层 |阅读模式
环境:两块网卡eth(接公司内网,网段为10)和wifi(接互联网,网段为172),两块网卡均为dhcp自动获得IP
场景:正常情况下,两块网卡工作正常。现在的情况是wifi不稳定,需要定时将网卡禁用一下,再启用,然后就一切正常了。
需求:ping 一个外网的地址,从bytes字段中获得一个值,判断是否大于0,以此来确定互联网连接是否正常。
        如果正常,则直接退出,如果不正常,则将wifi网卡禁用之后再启用,然后再退出。

我写的脚本如下:
::关闭回显
@ echo on

::ping open dns
ping -n 2 -l 1 208.67.222.222


::从ping命令的执行结果中,获取byte字符串值并比对是否大于0
代码不会写了,请高人指点

::如果大于0直接退出,如果为非O值,则执行网卡禁用启用操作。
netsh interface set interface "WiFi" disabled
netsh interface set interface "WiFi" enabled

::退出
exit
发表于 2012-9-11 23:52:08 | 显示全部楼层
本帖最后由 Bearxy 于 2012-9-12 00:07 编辑

  1. @echo off
  2. set ip=127.0.1
  3. rem 需要ping的ip
  4. ping %ip%|findstr "bytes=32"&&exit||goto No
  5. rem ping 127.0.1如果找到"bytes=32"则退出,没有找到则跳转到:No

  6. :No
  7. netsh interface set interface "WiFi" disabled
  8. netsh interface set interface "WiFi" enabled
  9. pause
复制代码
貌似不管PING什么字节都是32吧?所以只需要判断是否等于32就可以了, WIN7测试通过
 楼主| 发表于 2012-9-12 11:03:58 | 显示全部楼层
不是,如果不带“-l 数字”这部份的话,默认是32字节
-l参数是包的长度,
带上-l的参数,可以防止对端的安全设备因为包过长而误判为是洪水攻击,我一般都只发一个字节的包过去。

非常感谢,我改一下,马上测试。
发表于 2012-9-12 12:15:05 | 显示全部楼层
本帖最后由 Bearxy 于 2012-9-12 12:51 编辑

回复 3# iplute

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=5 delims== " %%a in ('ping/n 2 -l 1 127.0.1^|findstr "字节=1" ') do (
  4. set str=%%a
  5. echo.字节为:!str!
  6. if "!str!" gtr "0" (echo.网络正常,2秒后退出...&ping/n 3 127.0.1>nul&&exit
  7. ) else (
  8.   goto :Nok
  9. ))


  10. :Nok
  11. echo.网络不通,运行命令
  12. netsh interface set interface "WiFi" disabled
  13. netsh interface set interface "WiFi" enabled
  14. pause
复制代码
如果字节大于0,则2秒后退出,反之则运行标签:NOK
因为我这边是WIN7系统,所以PING出来的结果是中文,你自己修改一下就好了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 15:29 , Processed in 0.076298 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表