Categories: Windows

バッチファイルで指定した時間だけ処理を停止するtimeoutコマンド

前回の記事では、バッチファイルの処理を一時停止するpauseコマンドを紹介しました。しかし、pauseコマンドはユーザーのキー入力を待つため、自動化処理などでは不便な場合があります。

そこで今回は、指定した秒数だけ処理を待機させるtimeoutコマンドを詳しく解説します。キー入力による中断を防ぐ方法や、カウントダウン表示を非表示にする方法など、様々なオプションを活用して、バッチファイルの制御をより柔軟に行いましょう。

Windowsのバッチファイルで、処理を一時停止したいことがあると思います。 このようなときに、バッチファイルの処理を一時停止して、...

秒数を指定して処理を停止するバッチファイルの例

timeoutは、一定時間プログラムの実行を待機するコマンドです。早速、サンプルとなるバッチファイルと、その実行結果を見てみましょう。

timeout /t 5

「/t 秒数」で待機する秒数を指定します。

上記を実行すると、以下のように徐々にカウントダウンの秒数が減っていき、5秒待ってから処理が終了します。

このコマンドの注意点は、5秒待つ前に何かキー入力がある場合にも、処理が次に進んでしまうということです。そのため、絶対に5秒待たせたいというときには、さらにオプションを追加する必要があります。

キー入力による中断を防ぐ:/nobreak オプション

上記のキー入力をすると、指定秒数待たずに進んでしまう問題を解決するために存在するオプションが「/nobreak」です。

例えば、以下のように指定して使います。

timeout /t 5 /nobreak

実行すると以下のようになります。表示が変わったことがわかります。「/nobreak」を指定すると、「CTRL+C」を押した場合以外は終了しなくなるため、誤ってクリックして終了させてしまうことを防止することができます。

カウントダウン表示を非表示にする方法

最後に、コンソールに「〇秒待っています」というメッセージを表示させたくない場合にはどうしたらよいかを紹介します。

以下のように「> nul」を末尾に付けることでメッセージの表示を回避することができます。

timeout /t 5 /nobreak > nul

出力を空のファイルにリダイレクトすることで、コンソールには秒数が表示されず、指定秒数待って次の処理に進むことができます。

まとめ

  • timeoutコマンドは、バッチファイルの処理を指定した秒数だけ一時停止できます。
  • /nobreakオプションを使用することで、キー入力による中断を防ぐことができます。
  • 標準出力を nulデバイスにリダイレクトすることで、カウントダウン表示を非表示にできます。

これらのオプションを組み合わせることで、timeoutコマンドを様々な場面で活用できます。例えば、

  • ファイルのコピーや移動処理の後に、次の処理が実行される前に少し間を置く
  • ネットワーク接続が確立されるまで待機する
  • ユーザーにメッセージを表示した後、自動的に次の処理に進む

など、バッチファイルの処理フローをより細かく制御することができます。timeout コマンドをマスターして、バッチファイルの可能性をさらに広げましょう!

Haruoka