バッチでコマンド タイムアウトを設定する

Dr. Muhammad Abdullah 2023年3月20日
  1. バッチ スクリプトの timeout コマンド
  2. その他のコマンドまたはプロセスに timeout を設定する
バッチでコマンド タイムアウトを設定する

この記事では、最初に Batch スクリプトの timeout コマンドの概念について説明します。 この後、他のコマンドの timeout コマンドの設定について説明します。

バッチ スクリプトの timeout コマンド

timeout は、特定の期間、一時停止または遅延するためのユーティリティです。 このコマンドは、一定量の休憩を作成し、コマンドライン インターフェイスで一時停止を作成します。

timeout コマンドの構文は次のとおりです。

timeout /t <time in seconds> [/nobreak]

/t を指定したコマンド timeout は、遅延を作成するために使用され、その後に <time in seconds>、遅延を作成するための時間を秒単位で表す -1 から 100000 までの整数、およびオプション パラメータ /nobreak.

timeout コマンドで -1 を使用すると、いずれかのキーが押されるまで無期限の遅延が発生します。

次の timeout コマンドを検討してください。

timeout /t 5

timeout /t 5 コマンドは、5 秒またはキーが押されなくなるまで遅延します。 コマンドの出力は次のとおりです。

バッチ タイムアウト - 出力 1

オプションのパラメータ /nobreak は、timeout コマンドによって作成された遅延中のキーストロークを無視するために使用されます。 たとえば、次のコマンドを考えてみましょう。

timeout /t 5 /nobreak

次のコマンドの出力は次のとおりです。

バッチ タイムアウト - 出力 2

timeout コマンド メッセージも非表示にできます。 コマンド timeout /t 5 > nul は、出力メッセージを nul にリダイレクトすることにより、timeout コマンドのメッセージを非表示にするために使用されます。

その他のコマンドまたはプロセスに timeout を設定する

他のカスタム コマンドまたはプロセスのタイムアウトを遅らせることができます。 次のバッチ スクリプトを検討してください。

@echo off
start  notepad.exe
timeout /t 4
taskkill /f /im  notepad.exe > nul && (
   echo Task is killed.
   exit /b 31744
) || (
   echo No Command or Task to kill. The task is terminated in time.
)

上記のバッチ スクリプトでは、@echo off コマンドを使用して、実行中のコマンドをコマンド プロンプトから隠しています。 start notepad.exe コマンドは、プロセスを開始し、メモ帳エディター ウィンドウを起動するために使用されます。

コマンド timeout /t 4 コマンドは 4 秒遅延し、taskkill コマンドが続きます。これは notepad.exe プロセスが終了していない場合は終了します。

さらに、このスクリプトは Task is killed. を示しています。 taskkill コマンドが notepad.exe プロセスを強制終了する場合、ターミナル上で。

timeout 遅延中に notepad.exe が既に強制終了されている場合、taskkill コマンドは notepad.exe を強制終了せず、次の出力とともにエラー メッセージを表示します。

No Command or Task to kill. The task is terminated in time.