吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2671|回复: 6
收起左侧

批处理通过ping判断网络

[复制链接]
幼儿园一霸 发表于 2019-9-10 11:18
25吾爱币
本帖最后由 幼儿园一霸 于 2019-9-10 11:21 编辑

[Asm] 纯文本查看 复制代码
:cf
@echo off
ping www.baidu.com -n 1 >nul && goto :cg || goto :sb
:cg
start mshta vbscript:msgbox("已连接",0,"已连接")(window.close) & exit
:sb
ping 127.0.0.1 -n 3 >nul & echo False 
goto cf


这个批处理基本上已经满足判断网络了,但是在实际使用中发现有些问题。

2

2


根据上图会发现在断网的时候依然会接收到数据包,而根据上面的批处理指令ping www.baidu.com -n 1,被判定接收到数据包就会执行 goto :cg,而这时候根本没有连网,所以应该怎样判断是否真正的连上网(最好是在ping1次的情况下判断)。网络上有根据TTL判断网络的,但是具体情况不清楚,如果有其他方法也行,希望给出一个可以应对此种情况的批处理。如果可以也希望能给出你的批处理的解释说明。感谢

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

leon406 发表于 2019-9-10 11:18
[Bash shell] 纯文本查看 复制代码
:cf
@echo off
::对ping 操作进行 管道操作,筛选数据,包含 TTL 都是成功的
ping www.baidu.com -n 1 |find  "TTL" && goto :cg || goto :sb
:cg
start mshta vbscript:msgbox("已连接",0,"已连接")(window.close) & exit
:sb
ping 127.0.0.1 -n 3 >nul & echo False 
goto cf
韩立 发表于 2019-9-10 11:57
执行完ping之后,%errorlevel%的值会不一样,判断errorlevel来执行后续
akinet 发表于 2019-9-10 12:24
:looop
ping 192.168.0.252 -n 30 | find /i "请求超时" && goto test || goto looop 1>nul 2>nul
 楼主| 幼儿园一霸 发表于 2019-9-10 15:27
韩立 发表于 2019-9-10 11:57
执行完ping之后,%errorlevel%的值会不一样,判断errorlevel来执行后续

这个我试过,有0和1,只能分辨是已接收和丢失,所以这个不行。
 楼主| 幼儿园一霸 发表于 2019-9-10 15:31
akinet 发表于 2019-9-10 12:24
:looop
ping 192.168.0.252 -n 30 | find /i "请求超时" && goto test || goto looop 1>nul 2>nul

老哥你这个思路是可以的,但是你楼下的答案更加规范和完整,抱歉了。
 楼主| 幼儿园一霸 发表于 2019-9-10 15:34
leon406 发表于 2019-9-10 13:21
[mw_shl_code=bash,true]:cf
@echo off
::对ping 操作进行 管道操作,筛选数据,包含 TTL 都是成功的

老哥,楼上和你的思路一样,有异曲同工之处,都是找到ping返回值中带有明确标识的字符串,我先试试有没有什么问题,没什么问题的话就这样了。
返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-21 21:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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