编写BAT,如何检测是否ping成功

ping 192.168.113.61 && echo 成功! || echo 失败!
ping返回:Reply from [本机IP] :无法访问目标主机/TTL在传输中过期
用上面的代码却返回:成功!
&&和||,只判断成功与否,只要有回传数据,就显示成功
有没有什么好办法返回无法访问目标主机时也能返回:失败!
有办法么

第1个回答  2014-07-10
@echo off
ping 192.168.113.61 >nul
if %errorlevel%==0 (echo 成功) else (echo 失败)

楼主我说一下 你这条命令

无论怎样都不会显示失败因为 echo 成功 这条命令总会成功

长篇大论我说不起  看一下我以前提的问题

追问

但是如果返回“无法访问目标主机”还是会显示成功
还有如何在之前的命令执行成功后才执行下面的命令,并且!!同时将结果作为参数传过去?

追答

命令||如果前面的命令成功成功就执行这条命令
命令|命令接收参数

追问

||是前面失败则执行,我要前面成功才执行后面,并且同时!!!!传递参数,要是不回答,就吱一声

第2个回答  2014-07-16
ping 192.168.113.61|findstr TTL= && echo 成功! || echo 失败!追问

只要没有"TTL"就是成功,但要是命令本身返回了失败的“请求超时”呢

追答

可以参考这个思路自己修改,如果没有某个字符串如“TTL” 则如下:
ping 192.168.113.61|findstr /v TTL && echo 成功! || echo 失败

注意findstr 命令区分大小写 ,如果忽略大小写需要加/i 参数。如
ping 192.168.113.61|findstr /iTTL= && echo 成功! || echo 失败

ping 192.168.113.61|findstr /iv TTL && echo 成功! || echo 失败

追问

那需要ping很多次,结果就乱了,要ping一次出结果的,如果返回请求超时,本身返回就是错误,如果返回无法访问目标主机,则是返回成功,因为有来自其它主机的返回,所以不能单纯通过errorlevel判断,这才是我的纠结所在,要是ping多次,我也会弄,LZ可以考虑一下变量

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网