時間指定して経過後、続きからbatファイルを動かしたい場合は「Timeout」コマンドを使用します。
batファイルで一時停止させたい場合「Pause」コマンドを使用しますが、時間指定して経過後、続きからbatファイルを動かしたい場合はないでしょうか?
Pauseだとbatファイルが止まってしまい、手動でないとすべての処理を完了する事はできません。
windowsのプロンプトで使用できるbatやpythonやphpを使用して、業務効率化やWebサイトを作成しております。javaやシェルスクリプトなど、様々なプログラミングを行った実績ありの筆者です。
現役エンジニアの筆者がbatファイルの「Timeout」コマンドについてご紹介します。
また「Timeout」を指定しても思い通りに動かないと言った場合の対処法も教えます。
batファイルでTimeoutの使い方!オプションについて
batファイルの「Timeout」の使い方をまとめました。
オプション | オプションの意味 |
---|---|
/t | 停止時間を決める |
/nobreak | キーを押してもタイムアウトまでまつ |
「Timeout /t」オプションの使い方!
/tで待ち時間を決めます。指定できる時間は-1から99999までです。
-1を指定すると任意のキーを押すまで停止する。つまりbatファイルの「Pause」コマンドと同様の効果になります。
「Timeout /nobreak」オプションの使い方!
/nobreakを指定すると何かのキーを押しても無視して、タイムアウト値まで待つ。
待っている間に次に行きたくなった場合はCtrl+Cで強制解除可能です。
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前
・
・
windows11や環境の問題でこういった事が起こるようです。
こんな時どうすれば良いでしょうか?
batファイルのTimeoutで挙動がおかしくなった時の対処法
こういう時は別のコマンドで置き換えましょう!
理由ですが、変に環境を変えると別のbatファイルなどで不具合が出るかもしれません。代理のコマンドで対応可能であればその方が安心だからです。
では「Timeout」の代理のコマンドとは何でしょうか?
「powershell start-sleep -seconds 秒数」コマンドです。
では先程の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 | キーを押してもタイムアウトまでまつ |
/tで待ち時間を決めます。指定できる時間は-1から99999までです。-1指定でキーが押されるまで待つ
/nobreakを指定すると何かのキーを押しても無視して、タイムアウト値まで待つ。Ctrl+Cで解除
「Timeout」の挙動がおかしい場合は「powershell start-sleep -seconds 秒数」コマンドに置き換える。
Timeoutが理解できればbatファイルで一時停止、秒数停止など極める事が出来ます!自動化の幅が広がったはずです。