Programming Field

Timeout - DOS/コマンドプロンプト コマンド一覧

[Windows Vista以降(※)] 一定時間待機(タイムアウト)を行います。Linux系におけるsleepに相当します。

※ Windows Vista以降では標準で利用できますが、それ以前のWindowsでもResource Kit内に含まれている場合があります。

構文

timeout[.exe] [/T] <seconds> [/NOBREAK]
[/T] <seconds>

待機する時間(タイムアウト時間)を指定します。<seconds> には -1 から 99999 までを指定可能で、この数を秒数として待機を行います。(「/T」は省略可能です。)

なお、-1 を指定した場合はタイムアウトせずに何か入力があるまで待機します(Pauseと同様)。/NOBREAK がある場合は Ctrl+C 入力があるまで待機します。

/NOBREAK

通常のキー入力による待機終了を無効化します。この指定を行うと、ユーザーは指定された時間か Ctrl+C を入力しない限り待機を終えることができません。

/NOBREAK を指定しない場合は、ユーザーはPauseと同様に何かキーを入力することで待機を終了することができます。

解説

Timeout使用例

メッセージを表示するなどの理由で一定時間待機したい場合に利用することができます。通常の動作では以下のような表示が行われ、指定時間が経過するかユーザー入力が行われるまで待機されます。

10 秒待っています。続行するには何かキーを押してください ...

リダイレクトを行っていない場合、秒数の部分は自動でカウントダウンされます。リダイレクトした場合はバックスペース文字(\x08)とカウントダウンされた数値が出力内容に入ります。

タイムアウト時間を「-1」とした場合は秒数の部分が省略されます。これはPauseコマンドで待機する場合とほぼ同様の挙動になります。

/NOBREAK を指定した場合はメッセージは以下のように変化します。

10 秒待っています。終了するには CTRL+C を押してください ...

バッチファイルの場合、Ctrl+C が入力される(バッチファイルが実行しているプログラムが特殊ハンドルしない場合を含む)と「バッチ ジョブを終了しますか (Y/N)?」というプロンプトが表示され、ここで Y を入力すると以降のバッチ処理が行われなくなるため、「続行するには」ではなく「終了するには」というメッセージに変わっています。

※ 「/NOBREAK」と「-1」の同時指定も可能です。この場合行き止まりのような形にすることができますが、前述の終了を尋ねるプロンプトで N を入力すると次の処理に進むため、この方法を用いる場合でも次の処理に進む可能性があることを考慮して用いる必要があります。

サンプル1

timeout /T 5

5秒待機を行います。5秒経過していない場合でもユーザーが何かキーを入力すれば待機が終了します。

サンプル2

timeout 5 /NOBREAK > NUL

メッセージを表示せずに5秒待機を行います。/NOBREAK オプションと出力抑制(NUL出力リダイレクト)により、Linux系の「sleep」コマンドのような挙動を取ることができます。

関連項目