我正在使用批处理文件设置LAN ping测试.我的代码对网站很有用,但对本地IP来说却很奇怪.我在3台知道IP的计算机上运行ping测试.无论我拔掉哪一个,当我运行下面的代码时,%errorlevel%在所有三台计算机上始终为0.它永远不会像在网站上那样等于1.我该如何解决这个问题?
@echo off
cls
Set IPaddress=www.google.com
PING %IPaddress% -n 1
call :PingTest
Set IPaddress=www.yahoo.com
PING %IPaddress% -n 1
call :PingTest
Set IPaddress=www.unabletoping.com
PING %IPaddress% -n 1
call :PingTest
pause > null
exit
:PingTest
IF %errorlevel% EQU 1 (echo "Server is Offline") else (GOTO:EOF)
Run Code Online (Sandbox Code Playgroud)
MC *_* ND 15
当您在子网中ping不可访问的地址时,会收到"无法访问"的答案,发送1个数据包,收到1个数据包,丢失0个数据包.未设置Errorlevel.
当您从子网中ping不可访问的地址时,会收到"超时"应答,发送1个数据包,收到0个数据包,丢失1个数据包.Errorlevel已设置.
并且,您可以ping活动计算机,丢失数据包并获得错误级别
并且,您可以ping活动/非活动计算机,使TTL过期并且不会出现错误级别
更好,检查ping响应的内容.
ping -n 1 192.168.1.1 | find "TTL=" >nul
if errorlevel 1 (
echo host not reachable
) else (
echo host reachable
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
72568 次 |
| 最近记录: |