想要寫一支bat檔,找不到指令
功能:
我要知道192.168.1.22這個ip是否有設備在使用,當設備上線時就寫一個記錄下來,
我記得有一指令可以像迴圈一樣一直ping這個ip,直到這個ip有回應才往下執行
迴圈 ping 192.168.1.22 一直到有回應時 <=這個部分不會寫
echo 192.168.1.22 %date%%time% 上線了 >a.txt
可以的話看能不能在補一段,繼續ping,我想知道他什麼時候離線
求解,感謝
這是我自用的,與你說的有些差異,參考看看
@Echo off
Cls
Set Count=0
Set Flag=3
Set Address=220.1.2.3
Set StartTime=%Date%--%Time%
Set TempName=PingTest
:Loop
Set Time0=0000000000%Time::=%
::上一行避免0點時位數只有一個,將取得的時間格式化為固定10+時間位數。
Set Date0=%Date:/=%
Set FileStr=%Date0:~0,8%%Time0:~-10,7%
::上一行為了避免時間為0點時發生錯誤將格式化後的時間存入日誌檔檔名。
Set FileName=%FileStr: =%
Echo 測試項目:連線狀態>>%FileName%.Log
Echo 目標位址:%Address%>>%FileName%.Log
Echo 開始時間:%StartTime%>>%FileName%.Log
Echo 日誌時間:%FileName%>>%FileName%.Log
Echo ---------------------------------初始路由表--------------------------------->>%FileName%.Log
Route Print >> %FileName%.Log
Echo.>>%FileName%.Log
Echo ---------------------------------初始位址解析--------------------------------->>%FileName%.Log
Arp -a >>%FileName%.Log
Echo. >>%FileName%.Log
:ReStart
Echo.
Echo 這個程式是由鼎爾資訊進行連線測試用,請不要關閉。
Set /a Count=%Count% +1
Ping /n %Flag% %Address% >%TempName%
::Findstr "已遺失 = 0" %TempName%
If %ErrorLevel% NEQ 0 (
Echo =====錯=====誤=====發=====生===== %date%-%time% =====錯=====誤=====發=====生=====>>%FileName%.Log
Type %TempName% >>%FileName%.Log
Echo. >>%FileName%.Log
Echo ---------------------------------錯誤時路由表--------------------------------->>%FileName%.Log
Route Print >> %FileName%.Log
Echo. >>%FileName%.Log
Echo ---------------------------------錯誤時位址解析------------------------------->>%FileName%.Log
Arp -a >> %FileName%.Log
Echo. >> %FileName%.Log
Echo 出錯了 ^! 無法取得 %Address% 的回應^(%Time%^)^!^!^!
) Else (
Type %TempName%
)
If %Count% EQU 1000 (
Set /a Count=0
Echo -----------------這裡是日誌檔的結尾----------------->>%FileName%.Log
Echo 已執行一千次,將寫入新的日誌檔。
Goto Loop
)
Echo %Count%
Goto ReStart
Goto :EOF