コマンド別解説

pause(バッチファイルの処理を一時停止する)

>>pauseのオプション簡易解説へ

こんなことを知りたい人へ向けて書いています

  • Windowsバッチファイルで処理を一時停止する方法を知りたい方
  • 「pause」コマンドについて詳しく知りたい方
  • 「pause」コマンドを実行したときにメッセージを表示しない方法を探している方
  • 「pause」コマンド以外にバッチファイルの処理を一時停止する方法を知りたい方

 

目次

 

「pause」コマンドでバッチファイルの処理を一時停止する

「pause」はバッチファイルに記述した処理を一時停止するコマンドです。使い方は、単純で処理を一時停止したい位置に「pause」コマンドを書き込みます。

「pause」コマンドにはオプションはありません。

 

以下「pause」コマンドを使用したバッチファイル「pause_test.bat」の例を示します。

このバッチファイルを実行すると、4行目の「プログラム開始」をコマンドプロンプト画面に出力した後、7行目の「pause」コマンドで処理が一時停止するはずです。

実際に実行した結果は以下の画面となります。

pause(処理を一時停止する) 「pause」コマンドの使用例

7行目に書いた「pause」コマンドによって処理が停止し、「続行するには何かキーを押してください…」と表示されました。

続行したい場合は、何でもいいのでキーを押すと、その後の処理が実行されます。

pause(処理を一時停止する) 「pause」コマンドの使用例(キー入力後)

キーを押した後、「プログラム終了」の文字列が表示されるまでの処理が実行されました。

 

「続行するには何かキーを押してください…」と表示されている状態でバッチファイルを中止したいとき(つまり、ここから先の処理を実行したくないとき)は、「Ctrl+C(Ctrlキーを押しながらCを押す)」を入力します。バッチファイルを終了するか尋ねられるので、「Y」キーを入力すればその後の処理は実行されずその場で処理が終了します。

pause(処理を一時停止する) 「pause」コマンドの使用例(途中でバッチファイルを終了する)

やっぱり処理を続行したい場合は、「N」を入力するとその場所から処理が開始されます。

 

どのようなときに「pause」コマンドを使用するか

プログラムを作成していると「pause」コマンドを使用する場面は多くあります。

プログラムの動作確認や設定を一度確認してから処理を進めたいときなどです。以下のバッチファイル「check_and_execute.bat」を見てみましょう。

これは、「file.txt」というファイルの内容を確認してから、コマンド(ここでは、「copy」)を実行しているバッチファイルです。

4行目で「more」コマンドを使い「file.txt」ファイルの内容をコマンドプロンプト画面に表示させて、7行目の「pause」コマンドで一時停止させます。ファイル内容に間違いがなければ、何かキーを押して、処理を続行させることで「copy」コマンドを実行しファイルをコピーします(10行目)。

以下、「check_and_execute.bat」の実行結果です。まずは実行直後です。

「parameter…」から始まっているのが「file.txt」の中身です。内容を確認し、これで良ければ何かキーを押して処理を続けます。

 

次は、ループと「pause」コマンドを併用したバッチファイルの例「pause_in_loop.bat」です。この組み合わせもよく登場します。

6行目から8行目でa[x]に文字列を代入しています。

11行目からの「for」ループで、a[x]に入っている文字列をループ内で表示させて、一回一回「pause」コマンドによって確認しながら処理を続けています。

このようなa[x]が3つの場合では、「pause」コマンドで一時停止させることにあまり恩恵を感じないかもしれません。しかし、これが100個や1000個の変数に対してループを回す場合だと、コマンドプロンプト画面に一気に変数の内容が表示されてしまい、一つずつ丁寧な確認ができません。そのようなとき、ここで見たような「pause」コマンドをループの中に入れてやると確認が楽になるでしょう。

以下、実行途中のコマンドプロンプト画面です。

a[x]を確認したら何かキーを押して処理を進めていきます。

 

「続行するには何かキーを押してください . . .」メッセージを表示させない

「pause」コマンドを実行すると、「続行するには何かキーを押してください…」と表示されます。このメッセージを表示させたくない場合は、以下のようにします。

「pause」コマンドの後に、「> nul」を付けました。これで、メッセージは表示されなくなります。これは、通常はコマンドプロンプト画面に出力していたメッセージを、代わりに「nul」という空の空間に出力したからです。

この「> nul」を使ってメッセージを表示しないようにする方法は「pause」コマンドに限ってできることではありません。「move」や「copy」コマンドで出力されるメッセージに関しても同様の方法で消すことができます。このあたりの詳しい説明は「コマンドのメッセージ表示を消す -やりたいことから検索-」を参照してください。

「pause > nul」コマンドを実行すると以下のようになります。

メッセージが完全に消えていますが、動作自体は同じです。何かキーを押せば処理が先へ進みます。

何も表示されないとユーザーが何をしていいか分からなくなるかもしれませんので、「echo」コマンドでメッセージを書き加えてあげるとよいかもしれません。

 

「pause」コマンド以外にバッチファイルの処理を一時停止する方法

「pause」コマンド以外にもバッチファイルの処理を一時停止する様々な方法が存在します。ここでは、よく使用する2つの方法について紹介します。

  • 「set /p」コマンドを使う方法
  • 「choice」コマンドを使う方法

どちらもユーザーからの指示を待って、ユーザーが入力するまでは処理を停止する動作を利用したものです。

「set /p」コマンドを使う方法

まずは、「set /p」コマンドを使う方法です。「set」コマンドに「/p」オプションを付けたものですが、これはユーザーからの入力を受け付けるコマンドになります。詳しくは「set(変数の設定・計算・ユーザーからの入力情報の取得) -コマンド別解説-」を参照してください。

「set /p」によってユーザーからの入力を求めることで、バッチファイルの処理を一時停止します。以下のバッチファイル「pause_with_set_p.bat」は「set /p」コマンドでユーザー入力を求め、入力された情報によって処理を変えています。

4行目で「set /p」コマンドによってユーザーからの入力を求め、処理を一時停止させています。ユーザーが処理を先へ進めるには数字(実は文字でもよい)を入力して、エンターを押す必要があります。

「pause」コマンドと異なるのは、「set /p」コマンドによって変数「age」へ数値を代入したため、「age」の値を使ってその後の処理を条件分岐できるという点です。7行目からの「if」文では、変数「age」の値を判別してコマンドプロンプト画面へ出力する文字を変えています。

シンプルなのは「pause」ですが、場合によっては「set /p」を使う機会もあるでしょう。

「choice」コマンドを使う方法

次は「choice」コマンドを使う方法です。これもユーザーからの入力を待つことで一時停止機能を実現します。「choice」コマンドに関しては「choice(指定したキーの入力を受け付ける) -コマンド別解説-」が詳しいです。

とすれば、ユーザーから「Y」と「N」のどちらかの入力を受け付けることができます。以下に実行した例を示します。

ここで、「Y」もしくは「N」を入力することで、処理を先へ進めることができます。

「set /p」コマンドと違う点は、最後にエンターを押す必要がないということです。コマンドプロンプトを開き「choice」コマンドを入力してみれば分かりますが、「Y」もしくは「N」を打ち込んだ瞬間に処理が再開されます。これは意外と大きな差で、「choice」コマンドを使う方がユーザー側が楽な場合もあります。

また、ユーザーが「Y」か「N」、どちらを入力したかを知ることもできますし、「Y」「N」以外の入力を求めることもできます。意外と奥の深い機能が備わっていますので、是非チェックしてみてください。→「こちらで指定したキーのみ入力を受け付ける -やりたいことから検索-」「choice(指定したキーの入力を受け付ける) -コマンド別解説-

Windowsバッチファイル初心者へ向けた入門書を作成しました


Windowsバッチファイル初心者の方へ向けた入門書(PDF)を作成しました。


・初めてWindowsバッチファイルを勉強してみようと思っている方

・使ったことはあるが一から基礎を学び直したい方


へ向けて丁寧な解説を行っています。


「全くプログラムを知らない方でも、この入門書を読んだ後には、Windowsバッチファイルの中級者レベルになれるように」をコンセプトに執筆したものです。


この本を読めば、バッチファイルを使ったファイルやフォルダの操作に関しては一通りのことができるようになります。そうなればもう十分中級者と呼べるレベルですので、あとは自分のやりたいことを実現しようとする中で徐々に知識を蓄えていくだけですぐに上級者へなれるでしょう。


詳しくみる

関連ページ

コメント

  1. ぼんたろう より:

    素晴らしい記事ありがとうございます。
    すごく細かい誤字ですが、
    「echo 処理と進めるには、エンターキーを押してください。」
    となっているところ、
    「処理を」
    ではないでしょうか?
    記事はとてもわかり易く勉強になりました。ありがとうございました。

  2. 平石司 より:

    「「pause」コマンドにはオプションはありません。」とありますが、ありますよ。

    たとえば、

    pause “何かキー入力すると、次の処理(◯◯)を実行します。”

    などとできます。

コメントを残す