使用ping.exe的ERRORLEVEL测试IP可达性

时间:2017-12-21 16:05:31

标签: batch-file ping

背景

  • 我想在.bat文件中的某些操作之前检查指定的主机是否可以访问IP。
  • 我尝试使用ping.exe测试IP可达性,但是当指定的主机IP可达或网络无法访问时,我发现ping.exe返回ERRORLEVEL 0。

问题

如何在.bat文件中测试指定主机的IP可达性?

有没有办法区分IP可达和网络不可达ping.exe,或任何其他命令来测试IP可达性?

2 个答案:

答案 0 :(得分:1)

ping的错误级别不可靠(正如您所注意到的)。 (ab)使用find获取错误级别

ping 192.168.0.99 | find "TTL="
echo %errorlevel%

(注意:搜索TTL=是最可靠的解决方案)

答案 1 :(得分:1)

你也可以使用类似的结构,(我成功时使用了Echo命令)

Ping -n 1 151.141.90.381 | Find "TTL=" >Nul && Echo host is reachable

...或者更有可能在你的情况下,(如果主机无法访问,这将结束脚本,你想要运行的任何命令都将遵循该行)

Ping -n 1 151.141.90.381 | Find "TTL=" >Nul || GoTo :EOF