timeout - 待機

にメンテナンス済み

バッチファイルで、他のプログラミング言語のsleepやwaitのように、一定時間待機したい場面があります。

例えば、startコマンドでアプリケーションを起動した後、準備が整うまで数秒待ってから次の処理に進みたい場合などです。

コマンドプロンプト・バッチファイルで一定時間待機するには、timeoutコマンドを使用します。ここでは、基本的な使い方からオプションの設定方法まで、サンプルコードとともに説明します。

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

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

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

/tオプションは必須です。指定せずに実行すると、以下のようにエラーとなります。

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

/tオプションには、待機する秒数を-1から99999の範囲で指定します。

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

- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>
timeout /t 10
10 秒待っています。続行するには何かキーを押してください …
おすすめ書籍※ 広告を含む場合があります
中小企業経営者のためのRPA入門 RPA導入を成功させる方法

中小企業経営者のためのRPA入門 RPA導入を成功させる方法

60分でわかる! AIエージェント 超入門

60分でわかる! AIエージェント 超入門

コマンドラインの黒い画面が怖いんです。

コマンドラインの黒い画面が怖いんです。

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門

timeoutコマンドは、必ずしも指定した時間を待機するわけではありません。

「ユーザーが何も操作しなければ、指定した時間だけ待機する」というのが正しい動作で、timeout /t 10と指定していても、ユーザーが何かキーを押すと待機が終了し、次の処理に進みます。

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

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

/nobreakを指定すると、Ctrl + C 以外のキー入力では待機を中断できなくなります。

なお、Ctrl + C を押した場合は、バッチファイル自体の実行が中断されます(「バッチ ジョブを終了しますか (Y/N)?」と確認されます)。

timeoutコマンドの具体例

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

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

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

メッセージを確認してもらいたいときなど、バッチファイルの最後で画面を閉じずに待機させる用途にも使えます。

バッチファイルで、処理と処理の間に待機時間を設ける

処理と処理の間に待機時間を設ける場合は、以下のように記述します。

@echo off
setlocal

echo 処理1

timeout /t 10

echo 処理2

endlocal

/nobreakオプションを指定していないため、ユーザーがキーを押すと待機が終了し、処理2に進みます。

バッチファイルで、処理と処理の間に必ず待機時間を設ける

キー入力で待機を中断させず、必ず指定した時間を待機させるには、/nobreakオプションを指定します。

@echo off
setlocal

echo 処理1

timeout /t 10 /nobreak

echo 処理2

endlocal

timeoutコマンドが使えないとき

timeoutコマンドは、入力リダイレクト(timeout /t 10 < input.txtなど)を使用している場合や、標準入力が使えない環境(タスクスケジューラ経由の実行など)では、以下のエラーとなることがあります。

- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>
エラー: 入力リダイレクトはサポートされていないため、直ちにプロセスを終了します。

このような場合は、存在しないアドレス127.0.0.1へのpingの応答待ちを利用して待機する方法があります。-nには待機したい秒数に 1 を足した回数を指定します。

ping 127.0.0.1 -n 11 > nul

上記は約 10 秒間待機します。

練習問題

練習問題

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

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