サイトアイコン スグブログ

【bat基礎】Timeoutの使い方!効かない時の対処法などご紹介

時間指定して経過後、続きからbatファイルを動かしたい場合は「Timeout」コマンドを使用します。

batファイルで一時停止させたい場合「Pause」コマンドを使用しますが、時間指定して経過後、続きからbatファイルを動かしたい場合はないでしょうか?

Pauseだとbatファイルが止まってしまい、手動でないとすべての処理を完了する事はできません。

数秒後に再度動かしたい場合は「Timeout」コマンドで可能です。

windowsのプロンプトで使用できるbatやpythonやphpを使用して、業務効率化やWebサイトを作成しております。javaやシェルスクリプトなど、様々なプログラミングを行った実績ありの筆者です。

現役エンジニアの筆者がbatファイルの「Timeout」コマンドについてご紹介します。

また「Timeout」を指定しても思い通りに動かないと言った場合の対処法も教えます。

batファイルでTimeoutの使い方!オプションについて

batファイルの「Timeout」の使い方をまとめました。

オプションオプションの意味
/t停止時間を決める
/nobreakキーを押してもタイムアウトまでまつ
Timieoutコマンドのオプション一覧

「Timeout /t」オプションの使い方!

/tで待ち時間を決めます。指定できる時間は-1から99999までです。

-1を指定すると任意のキーを押すまで停止する。つまりbatファイルの「Pause」コマンドと同様の効果になります。

batファイルの「Pause」コマンドについての詳しい使い方は、下のリンクの記事をご覧ください。

「Timeout /nobreak」オプションの使い方!

/nobreakを指定すると何かのキーを押しても無視して、タイムアウト値まで待つ。

間違えてキーを押し間違えても大丈夫ですね。

待っている間に次に行きたくなった場合はCtrl+Cで強制解除可能です。

batのtimeoutと同じ効果でsleepコマンドもあります。

batファイルのTimeoutの挙動がおかしい場合の対処法

batファイルで「Timeout」を使用しているのに、おかしい挙動になる場合があります。

batファイルのTimeoutで挙動がおかしくなる例文

例えば以下のbatファイルを実行します。

@echo off

echo Timeout前
timeout /t 10
echo Timeout後
pause

例のbatファイルでは「Timeout前」と表示され、10秒停止して「Timeout後」と表示される想定です。

しかし例のbatファイルを実行してみます。

Timeout前
Timeout前
Timeout前
Timeout前
Timeout前
Timeout前
・
・

実行結果は「Timeout前」と永遠に表示されています。

windows11や環境の問題でこういった事が起こるようです。

こんな時どうすれば良いでしょうか?

batファイルのTimeoutで挙動がおかしくなった時の対処法

こういう時は別のコマンドで置き換えましょう!

理由ですが、変に環境を変えると別のbatファイルなどで不具合が出るかもしれません。代理のコマンドで対応可能であればその方が安心だからです。

では「Timeout」の代理のコマンドとは何でしょうか?

「powershell start-sleep -seconds 秒数」コマンドです。

powershellとなっていますがbatファイルでも問題なく動きますので安心してください。

では先程のbatファイルの例文の「Timeout」を「powershell start-sleep -seconds」に変更してみましょう

@echo off

echo Timeout前
powershell start-sleep -seconds 10
echo Timeout後
pause

実行してみると以下のような結果となり、想定通りの動きになっています。

Timeout前
(10秒の停止あり)
Timeout後
続行するには何かキーを押してください . . .

【bat基礎】Timeoutの使い方!効かない時の対処法などご紹介まとめ

batファイルのTimeoutの使い方をまとめました。

オプションオプションの意味
/t停止時間を決める
/nobreakキーを押してもタイムアウトまでまつ
Timieoutコマンドのオプション一覧

/tで待ち時間を決めます。指定できる時間は-1から99999までです。-1指定でキーが押されるまで待つ

/nobreakを指定すると何かのキーを押しても無視して、タイムアウト値まで待つ。Ctrl+Cで解除

「Timeout」の挙動がおかしい場合「powershell start-sleep -seconds 秒数」コマンドに置き換える

Timeoutが理解できればbatファイルで一時停止、秒数停止など極める事が出来ます!自動化の幅が広がったはずです。

モバイルバージョンを終了