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

前回の記事で、バッチファイルの処理を停止するpauseコマンドを紹介しました。pauseコマンドを利用すると、バッチファイルの処理を一時停止して、ユーザから何かキーが押されるのを待つことができます。

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

しかし、このようなクリック待ちではなく、〇秒待機した後に自動で停止が解除されるようにするにはどのようにしたら良いのでしょうか。

今回の記事では、秒数を指定して待機させることができる「timeout」コマンドを紹介します。

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

timeoutは、一定時間プログラムの実行を待機するコマンドです。秒数を指定する場合には「/t 秒数」で待ち時間を指定することができます。

早速、サンプルとなるバッチファイルと、その実行結果を見てみましょう。

timeout /t 5

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

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

秒数を指定して処理を停止するバッチファイルの例(キー入力防止)

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

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

timeout /t 5 /nobreak

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

秒数を指定して処理を停止するバッチファイルの例(コンソールへの秒数の表示を行わない)

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

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

timeout /t 5 /nobreak > nul

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

スポンサーリンク

シェアする

フォローする