バッチファイルを作成する際、一定の待機時間を設けたり、処理を一時停止したりする必要がある場面があります。そのような場合に便利なのが「timeout」コマンドです。
本記事では、バッチファイル内でのtimeoutコマンドの使用方法と具体的な活用例を紹介します。
この記事の対象
timeoutコマンドとは?
timeout /t 秒数 /nobreak
timeoutコマンドは、一定の時間待機するためのコマンドです。指定した時間(秒)だけ処理を一時停止することができます。一時停止中には画面に残り時間が表示されます。
Linuxのsleep
コマンドに近い機能を持っています。
/t 秒数
… 待機する秒数を指定/nobreak
… キー入力で待機が中断されないようにする
基本的な使い方
@echo off
echo 5秒待機します...
timeout /t 5
echo 待機が完了しました。
pause
上記では「5秒待機」した後に「待機が完了しました。」と表示されます。
最初から非表示で待機したい場合
@echo off
echo 処理を開始
timeout /t 10 >nul
echo 10秒経過
上記は、バッチファイル内で10秒の待機を行う場合のコードです。
>nul
を付けることで、「〇秒待っています…」の表示を消すことができます。
よくある使い方
キー入力で中断されないようにする
@echo off
echo 10秒待機します(キーを押しても中断されません)
timeout /t 10 /nobreak
echo 完了しました。
プログラム実行前に待機を入れる
@echo off
echo サーバー起動まで10秒待機します...
timeout /t 10
start notepad.exe
上記は、バッチファイル内でのループ処理における一時停止する場合のコードです。
サーバーや外部プログラムを起動する前に待機を入れたいときに便利です。
pauseとの違い
pause
… ユーザーがキーを押すまで処理が止まるtimeout
… 指定した時間だけ処理が止まる
自動処理を作る場合は timeout
の方が適しています。
実用例
ループ処理の中で待機
@echo off
for /l %%i in (1,1,5) do (
echo %%i 回目の処理
timeout /t 3 >nul
)
上記は、3秒ごとに繰り返し処理が実行されます。
バッチファイル自動生成ツール
以下のツールで「待機秒数」を入力すると、
timeoutコマンド付きのバッチファイルコードを自動生成できます。
この一冊でコマンドプロンプトの使い方がまる分かりできる優れものです。何か効率化したいけどどこからしたら良いか分からない時にはこの本を覗いてみて下さい。こんな事もできそうとヒントが貰えると思います。
まとめ
timeout
はバッチ処理で「一定時間待機」するために使う/t 秒数
で待機秒数を指定、/nobreak
で中断を防止pause
と違い「自動で処理が進む」ので自動化に便利
バッチファイルでの自動処理や定期処理を作るときに役立ちます。
ぜひ他の記事も参考にしてください。