HOWTO · Batch

バッチスクリプトの PAUSE キーワード

このチュートリアルでは、バッチスクリプトでの PAUSE キーワードの使用法を示します。

このページの内容

Windows のバッチファイルは、処理が終わるとコマンドウィンドウがすぐに閉じ、結果を読む時間が足りないことがあります。スクリプトの途中でキー入力を待たせるには PAUSE を使い、スクリプトの終了後もコマンドウィンドウを開いておくには CMD /K で起動します。この2つは動作が異なり、前者はスクリプトの実行を一時停止し、後者はコマンドセッションを利用できる状態に保ちます。

PAUSE コマンドの動作

Windows CMD では、PAUSE を実行すると標準の「Press any key to continue . . .」という英語のプロンプトが表示され、キー入力を待ちます。通常のキーを押すと、次のバッチコマンドが実行されます。Ctrl+C または Ctrl+Break を押すと、単に続行するのではなく、バッチファイルが中断され、終了処理が呼び出されることがあります。たとえば、結果を表示して、ユーザーが読む間だけ待機し、その後に終了メッセージを表示するスクリプトを作れます。コマンドは @echo off、echo Report finished.、pause、echo The script continues here. です。

pause は、出力を人が確認する必要のある処理の後に置くと便利です。ユーザーが選択に同意したかを確認するものではありません。通常のキーを押すとスクリプトは続行し、Ctrl+C または Ctrl+Break を押すと中断されて終了処理が呼び出されることがあります。ファイルの削除やシステム設定の変更前に、安全確認の代わりとして使わないでください。また、対話的なユーザーがいない環境で実行するスクリプトでは、キーボード入力を無期限に待つことになるため、PAUSE は避けてください。

ここで示す例は Windows CMD の構文であり、この記事の準備時には実行していません。バッチファイルをダブルクリックして実行すると、コマンドの処理後にウィンドウが閉じることがあります。スクリプト内で一時停止すれば、キーが押されるまでウィンドウを表示したままにできます。

PAUSE の前に独自のメッセージを表示する

PAUSE のプロンプトは固定されており、任意の文言は指定できません。ユーザーに状況を伝えるには、echo で別のメッセージを表示してから、pause >nul で固定プロンプトを非表示にします。たとえば、echo Review the report above, then press a key to continue. の後に pause >nul を実行します。

独自の文言を表示するのは echo コマンドで、>nul は PAUSE の出力をリダイレクトし、標準プロンプトを隠します。ユーザーに何を読めばよいか、または次のスクリプト処理で何が行われるかを伝えたいときに便利です。案内文は正確に書いてください。キーを押すとバッチファイルが再開するだけで、ユーザーが操作を承認したことにはなりません。

標準プロンプトを表示したい場合は、>nul を省き、pause だけを使います。どちらの形式でも、ユーザーに見せる情報の後、待機させたいコマンドの前に一時停止を置いてください。

CMD /K でコマンドウィンドウを開いたままにする

バッチファイルの終了後もコマンドウィンドウを開いておきたい場合は、CMD /K を使います。たとえば、「ファイル名を指定して実行」ダイアログや別のコマンドランチャーから cmd /k ""C:\Scripts\report.bat"" と入力し、パスを .bat ファイルの場所に置き換えます。CMD の /K はコマンド文字列を処理する際に外側の引用符を消費するため、バッチファイルのパスは引用符で囲まれたままになります。これにより、空白を含むパスも1つのコマンド名として扱われます。CMD /K はコマンドを実行した後もコマンドインタープリターを開いたままにするので、出力を確認したり、別のコマンドを入力したりできます。

この方法では、バッチファイル内に一時停止は追加されません。スクリプトは特定の行で待たずにコマンドを実行し、コマンドの完了後もウィンドウが利用可能な状態になります。この例は Windows CMD の構文であり、この記事の準備時には実行していません。

バッチスクリプトに適した方法を選ぶ

次の行が実行される前に、特定の時点で人にメッセージや結果を読んでもらいたい場合は PAUSE を選びます。待機する理由が伝わるよう、一時停止の前に短い説明を表示してください。独自の echo メッセージだけで十分なら pause >nul を使い、標準プロンプトが役立つなら通常の pause を使います。キーを押す人がいない可能性のある、無人で定期実行する処理には、むやみに一時停止を加えないでください。

バッチファイルの終了後もコマンドウィンドウを開いておくことが主な目的なら、CMD /K を選びます。コマンドランチャーからスクリプトを起動し、最後の出力を確認したい場合に便利です。この方法はユーザーの応答を待って実行を止めるものではなく、キー入力を承認として扱うものでもありません。

どちらの方法も、CMD 上で動作する Windows のバッチファイルに適用されます。どちらも先行する処理が成功したかどうかは報告しません。成功または失敗に応じてスクリプト内で判断する必要がある場合は、コマンドの結果を別途確認してください。人が内容を読むための区切りには、意図した位置にスクリプト内の一時停止を置きます。コマンドセッションを開いたままにして、後から確認やコマンド入力を行うには CMD /K を使います。