使用 ping.exe 的 ERRORLEVEL 测试 IP 可达性
Test IP reachability with ERRORLEVEL of ping.exe
背景
- 我想在
.bat
文件中的某些操作之前检查指定的主机是否可以通过 IP 访问。
- 我尝试使用
ping.exe
测试IP可达性,但是当指定主机IP可达或网络不可达时,我发现ping.exe
returns ERRORLEVEL 0。
问题
如何测试 .bat
文件中指定主机的 IP 可达性?
有什么方法可以区分 IP 可达和网络不可达 ping.exe
,或任何其他测试 IP 可达性的命令?
ping
的错误级别不可靠(如您所见)。 (ab) 使用 find
得到错误级别
ping 192.168.0.99 | find "TTL="
echo %errorlevel%
(注意:搜索TTL=
是最靠谱的方案)
您也可以使用与此类似的结构,(成功后我使用了 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
背景
- 我想在
.bat
文件中的某些操作之前检查指定的主机是否可以通过 IP 访问。 - 我尝试使用
ping.exe
测试IP可达性,但是当指定主机IP可达或网络不可达时,我发现ping.exe
returns ERRORLEVEL 0。
问题
如何测试 .bat
文件中指定主机的 IP 可达性?
有什么方法可以区分 IP 可达和网络不可达 ping.exe
,或任何其他测试 IP 可达性的命令?
ping
的错误级别不可靠(如您所见)。 (ab) 使用 find
得到错误级别
ping 192.168.0.99 | find "TTL="
echo %errorlevel%
(注意:搜索TTL=
是最靠谱的方案)
您也可以使用与此类似的结构,(成功后我使用了 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