timeout - 待機

にメンテナンス済み

バッチファイルを使用している際、一定時間待機する処理が必要になることがあります。

例えば、バッチファイルでファイルのコピーを行った後に、コピーが完了するまで待機する処理を書く場合などです。

このページでは、コマンドプロンプト・バッチファイルで一定時間待機する処理について、基本的な使い方からオプションの設定方法まで分かり易く説明しています。

timeoutコマンドの基本的な使い方

コマンドプロンプトで一定時間待機する処理を実装するには、timeoutコマンドを使用します。

バッチファイル内で一連のコマンドを順番に実行する際に、あるコマンドと次のコマンドとの間に一定の待ち時間を設けたい場合などに使用します。

timeoutコマンドの使い方は以下の通りです。

timeout /t <待機する秒数> [/nobreak]

timeoutコマンドはオプションの指定が必須であり、オプションを指定せず実行した場合は以下のようにエラーとなります。

×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2024 Ribbit App Development All rights reserved.
 
C:\users\user>
timeout
エラー: 構文が無効です。
“TIMEOUT /?” と入力すると使用法が表示されます。

timeoutコマンドを使用する際は、/tオプションと待機する秒数を指定することで動作します。

例として、100 秒間待機する場合は以下のようになります。

×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2024 Ribbit App Development All rights reserved.
 
C:\users\user>
timeout /t 100
100 秒待っています。続行するには何かキーを押してください …

ここでお気づきかもしれませんが、timeoutコマンドは必ず指定した時間を待機するわけではありません。

「ユーザーが何も操作しなければ、指定した時間だけ待機する」というのが正しい動作です。

つまり、timeout /t 100と指定していたとしても、ユーザーが何かキーを入力することで、待機時間を中断することができます。

この動作を無効にするには、/nobreakオプションを指定します。

×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2024 Ribbit App Development All rights reserved.
 
C:\users\user>
timeout /t 100 /nobreak
100 秒待っています。終了するには CTRL+C を押してください …

上記のように指定することで、ユーザーが何かキーを入力しても、待機時間を中断することができなくなります。

Ctrl + C キーを押すことで中断することができますが、その場合はバッチファイルの実行も中断されます。

timeoutコマンドの具体例

ユーザーが操作するまで無期限に待機する

/tオプションに-1を指定することで、ユーザーが何かキーを入力するまで無期限に待機することができます。

×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2024 Ribbit App Development All rights reserved.
 
C:\users\user>
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

練習問題

練習問題

以下の選択肢のうち、ユーザーが操作するまで無期限に待機するコマンドはどれでしょうか?

回答がサーバーに送信されることはありません
#コマンドプロンプト #バッチファイル #引数 #コマンドライン #コマンド