timeout - 待機
バッチファイルを使用している際、一定時間待機する処理が必要になることがあります。
例えば、バッチファイルでファイルのコピーを行った後に、コピーが完了するまで待機する処理を書く場合などです。
このページでは、コマンドプロンプト・バッチファイルで一定時間待機する処理について、基本的な使い方からオプションの設定方法まで分かり易く説明しています。
timeout
コマンドの基本的な使い方
コマンドプロンプトで一定時間待機する処理を実装するには、timeout
コマンドを使用します。
バッチファイル内で一連のコマンドを順番に実行する際に、あるコマンドと次のコマンドとの間に一定の待ち時間を設けたい場合などに使用します。
timeout
コマンドの使い方は以下の通りです。
timeout /t <待機する秒数> [/nobreak]
timeout
コマンドはオプションの指定が必須であり、オプションを指定せず実行した場合は以下のようにエラーとなります。
timeout
コマンドを使用する際は、/t
オプションと待機する秒数を指定することで動作します。
例として、100 秒間待機する場合は以下のようになります。
ここでお気づきかもしれませんが、timeout
コマンドは必ず指定した時間を待機するわけではありません。
「ユーザーが何も操作しなければ、指定した時間だけ待機する」というのが正しい動作です。
つまり、timeout /t 100
と指定していたとしても、ユーザーが何かキーを入力することで、待機時間を中断することができます。
この動作を無効にするには、/nobreak
オプションを指定します。
上記のように指定することで、ユーザーが何かキーを入力しても、待機時間を中断することができなくなります。
Ctrl + C キーを押すことで中断することができますが、その場合はバッチファイルの実行も中断されます。
timeout
コマンドの具体例
ユーザーが操作するまで無期限に待機する
/t
オプションに-1
を指定することで、ユーザーが何かキーを入力するまで無期限に待機することができます。
バッチファイルで、処理と処理の間に待機時間を設ける
バッチファイルで、処理と処理の間に待機時間を設ける場合は、以下のように記述します。
@echo off
setlocal
echo 処理1
timeout /t 100
echo 処理2
endlocal
上記の場合は/nobreak
オプションを指定していないため、ユーザーの操作によって待機時間を中断することができます。
バッチファイルで、処理と処理の間に必ず待機時間を設ける
待機時間を中断させないようにするためには、以下のように指定します
@echo off
setlocal
echo 処理1
timeout /t 100 /nobreak
echo 処理2
endlocal