求解:
有台主機每天早上會執行一個批次檔,有幾段覺得很奇怪
call :ping ip1 server1
call :ping ip2 server2
call :ping ip3 server3
...
echo 主機正常
goto end
:ping
set ip=%1
set server=%2
ping -n 1 %ip% | find "TTL=" > NUL
if ERRORLEVEL 1 (
ping -n 1 %ip% | find "TTL=" > NUL
if ERRORLEVEL 1 goto :serverdown
)
(繼續其他測試)
:serverdown
echo %server% 無法連線.
goto end
(略)
:end
問題來了,為什麼不用 ping -n 2 而要用 ping -n 1 再 ping -n 1 呢?


這支程式是在還沒架 SNMP 監測主機之前寫的.
因為被監測的主機有數十台, 監測項目除了 ping 之外還有每日報表檔是否已轉存等.
用 ping -n 1 的確是為了省資源(時間),

而總公司與分公司間偶爾 VPN 會斷線(瞬斷), 為了減少誤判,
才設定兩次失敗才認為真的斷線了.

目前已經改架 SNMP 主機來監控, 不過今天跟同事跟好挖出這支程式, 就丟出來看看.