バッチファイルで複数の処理を順番に実行するとき、次の処理を数秒待ってから実行したいケースがあります。Windows では timeout
コマンドや ping
コマンドを利用して簡単に遅延処理を実現できます。本記事ではそれぞれの方法と特徴を解説します。
timeout コマンドを使う方法
Windows Vista 以降で利用できる timeout
コマンドを使うと、指定した秒数だけ待機できます。
@echo off
echo 処理1を実行中…
rem 5秒待機
timeout /t 5 /nobreak >nul
echo 処理2を実行中…
/t
は待機秒数を指定し、/nobreak
を付けるとキー入力で待機が中断されるのを防げます。>nul
でメッセージ出力を抑制すると、余計な表示がなくなります。
ping コマンドを使う方法
古い環境(Windows XP など)では timeout
が使えないため、代替として ping
を利用する方法があります。存在しないアドレスに対して一定回数 ping を送ることで時間を稼ぎます。
@echo off
echo 処理1を実行中…
rem 5秒待機(127.0.0.1 へ 6 回 ping、デフォルト1回=約1秒)
ping 127.0.0.1 -n 6 >nul
echo 処理2を実行中…
-n
で回数を指定し、「回数 – 1」が待機秒数に相当します。正確な秒数を求める用途には不向きですが、手軽にディレイを入れることができます。
どちらを選ぶべきか
- Windows Vista 以降 → timeout を推奨(正確で読みやすい)
- Windows XP や制限環境 → ping を代替手段として利用可能
まとめ
バッチファイルで処理を遅延させたいときは、timeout
が使える環境ならそれがベストです。レガシー環境では ping
を用いた方法も活用できます。いずれの方法も簡単に組み込めるため、処理間の間隔を調整したいときに役立ちます。