我想用一個簡單的批處理腳本檢查計算機是否可以 ping 通。在某些情況下,我輸入錯誤并且主機名不正確,但作為反饋出現“成功”。
@echo off
REM stor.bat:
ping -n 1 %1 | find "TTL=" >nul
if errorlevel 1 (
echo Reachable
explorer.exe \\%1\c$\
) else (
echo Not reachable
)
uj5u.com熱心網友回復:
你的命令是基于 find "TTL=" 它適用于 ip4 號碼所以這應該作業
@echo off
REM stor.bat:
ping -n 1 %1 | find "TTL="
if %errorlevel%==0 (echo Reachable & explorer.exe \\%1\c$\) else (echo Not reachable & pause)
所以
stor 127.0.0.1
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reachable
但 ping 對名稱并不理想,請參閱此回應,其中未顯示成功
stor advent
Not reachable
但是ping -n 1 advent沒有回傳“TTL”的提示
Pinging ADVENT [fe80::6467:ace9:6aef:cb1a] with 32 bytes of data:
Reply from fe80::6467:ace9:6aef:cb1a: time=1ms
Ping statistics for fe80::6467:ace9:6aef:cb1a:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 1ms, Maximum = 1ms, Average = 1ms
一種方法是“查找”回應,例如“往返”
@echo off
REM stor.bat:
ping -n 1 %1 | find "round trip"
if %errorlevel%==0 (echo Reachable & explorer.exe \\%1\c$\) else (echo Not reachable & pause)
[編輯]正如@Stephen 所提醒的,我們可以通過添加 -4 來使用您的第一種方法來強制 TTL=
@echo off
REM stor.bat:
ping -4 -n 1 %1 | find "TTL="
if %errorlevel%==0 (echo Reachable & explorer.exe \\%1\c$\) else (echo Not reachable & pause)
uj5u.com熱心網友回復:
這batch-file將 ping 主機以確定它是否可用。這使用 PowerShell Core。如果您僅使用 Windows PowerShell,請更改pwsh.exe為powershell.exe.
請記住,某些主機可能禁用了 ICMP (ping)。
此外,如果您輸入錯誤的在線主機名(host02 而不是 host01),它也會回傳成功。
SET "THEHOST=%1"
FOR /F "delims=" %%A IN ('pwsh.exe -NoLogo -NoProfile -Command ^
"if (Test-Connection -TargetName %THEHOST% -Count 1 -Quiet) { 1 } else { 0 }"') DO (
SET /A "ISCONNECTED=%%A"
)
IF %ISCONNECTED% EQU 1 (
ECHO The %THEHOST% is connected
) ELSE (
ECHO The %THEHOST% is NOT connected
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/376737.html
上一篇:計算剩余天數的批處理腳本
