windowsでPCが起動したときに自動で処理を行いたい。
ただし、ルータやハブの起動よりも先に処理を始めてしまったら困る場合がある。
例えば、LANを認識できていないのにwebサービスへアクセスしてしまうとか、
端末自身に設定してあるIPを使って処理を分岐したいのに、ちゃんと判定できないなど。
そんなときは、バッチファイルでサーバや自身に向かってpingを投げ、
到達成功した場合のみ処理を行うようにする。
@echo off
echo IPアドレス取得のため待機中です
setlocal enableextensions enabledelayedexpansion
:CallPing
for /f %%i in (ip.txt) do (
set hostUp=0
rem エラーレベル0かつTTL=の文字を含んだメッセージが返ってきた場合は到達成功と見なす
ping -n 10 %%i |find "TTL=" && set hostUp=1
if !hostUp! equ 1 (
call :Online %%i
) else (
call :Offline %%i
)
)
:Online
rem 到達成功したら処理を開始する
start C:\App\GateServer
exit
:Offline
rem 到達成功するまで繰り返す
goto CallPing
同じ階層にターゲットとするIPアドレスを記載したテキストを置く。
ip.txt
192.168.100.95
batchのstartコマンドは別プロセスを呼び出して次の行へ進むため、exitでコマンドのウィンドウは自動的に閉じて終了する。