バッチファイル

コマンドプロンプトによる入力は、ユーザーがキーボードを使ってコマンドを入力しなければなりません。アプリケーションの起動や、簡単なファイルの操作であれば簡単ですが、多くのコマンドの組み合わせを個別に入力するのは非常に面倒です。そこで、入力するコマンドを事前にテキストファイルに書き出したものがバッチファイルです。

バッチファイルに書かれているテキストは、プログラミング言語ではなく、単純なコマンドの列です。バッチファイルを実行すると、バッチファイルに書かれているコマンドを順に実行します。echoのように、主にバッチファイルで使われることが前提とされたコマンドも多く用意されているため、上手くコマンドとアプリケーションを組み合わせることで、面倒な処理を一度に済ませることができます。プログラミングほどの汎用性はありませんが、開発ツールなども不要なので、その簡単さからシステム管理者や上級ユーザーの間で現在も親しまれています。

バッチファイルは、拡張子がBATのテキストファイルです。実行ファイルと同じように、エクスプローラーやコマンドプロンプトから起動できます。コマンドプロンプトからバッチファイルを起動した場合は、そのコマンドプロンプトのウィンドウで実行されます。エクスプローラーから起動した場合は、新しいコマンドプロンプトが開かれ、バッチファイルの処理が終了すると、自動的に閉じられます。

最初に、echoコマンドを使ってテキストを表示する簡単なバッチファイルを作成してみましょう。拡張子がBATのテキストファイルを作成し、メモ帳などのエディタで、次のようなコマンドを書いて保存してください。

サンプル01

echo Kitty on your lap

上記のコードを、test.bat ファイルとして保存したとして、コマンドプロンプトからファイル名testを入力することで、バッチファイルを実行できます。このバッチファイルは、ただ "Kitty on your lap" というメッセージを echo コマンドで表示するだけの簡単なものです。

実行結果

echo Kitty on your lapとのみ記述してあるtest.batファイルを実行した結果

サンプル01の実行結果を見ると、echoコマンドが自動的に入力され、その結果が得られていることが確認できます。複数のコマンドをバッチファイルに記述することで、複数のコマンドを自動的に実行することができます。一般に、何らかの作業をするときは、複数のアプリケーションを起動することになります。編集用のソフトやドキュメント、参考となるWebページなどです。あらかじめ、バッチファイルに起動するアプリケーションを書いておけば、簡単に起動できるようになります。

バッチファイルは、実行可能ファイルのようにエクスプローラーからも起動できますが、サンプル01を実行すると、コマンドプロンプトが一瞬だけ表示され、すぐに閉じてしまいます。これは、バッチファイルが終了すると、コマンドプロンプトが自動的に閉じてしまうためです。コマンドプロンプト上にメッセージなどを表示するバッチファイルの場合、処理を一時停止して、ユーザーの入力を確認するべきです。そのためにはpauseコマンドを使います。

pause

pause コマンドが実行されると "続行するには何かキーを押してください . . ." というテキストが表示され、ユーザーがキーを押すまで処理を待機します。

サンプル02

echo Kitty on your lap
pause

実行結果

test.batにpauseを追記すると、「続行するには何かキーを押してください...」と表示される

サンプル02のバッチファイルをエクスプローラーから起動するとpauseコマンドで処理が停止するため、すぐにコマンドプロンプトが閉じられることはありません。この方法であれば、コマンドプロンプトに慣れていないユーザーでもGUIからバッチファイルを起動して、処理の結果を確認できます。

バッチファイルによるコマンドの実行で、入力待ちの ">" やコマンド入力行が表示されるのは、冗長であると同時にかっこ悪いものがあります。バッチファイルによりコマンドの入力で、入力したコマンドが表示されないようにするには、コマンドエコーという機能を無効化する必要があります。コマンドエコーを無効にするには、コマンド名の直前にアットマーク@を指定します。

サンプル03

@echo Kitty on your lap
@pause

実行結果

@を使うと、コマンドは表示せずに出力結果だけを表示してくれる

サンプル03は、サンプル02と同じコマンドですが、コマンド名の直前にアットマーク@を指定しているため、コマンド自体は画面に表示されません。

ところが、大量にコマンドを入力しなければならない場合、個々のコマンドに@を付けるのは非効率的です。そこで、echoコマンドのパラメータにoffを指定することで、コマンドエコーを無効化する機能を使います。一度echoコマンドでコマンドエコーを無効化すれば、その後のコマンドは、画面には表示されません。逆にechoコマンドのパラメータにonを指定すれば、コマンドが表示されるようになります。

サンプル04

@echo off
echo Kitty on your lap
pause

実行結果

パラメーターにoffを指定すると、個々のコマンドに逐一offを指定せずとも出力結果のみを表示してくれる

サンプル04の実行結果は、サンプル03と同じです。最初のechoコマンドでコマンドエコーを無効化し、以降のコマンドが画面に表示されないように設定している点が異なっています。最初のechoコマンドだけは、表示されないようにするために@echoと書かなければなりません。

この場ではechoコマンドを指定していますが、これに代わって目的のアプリケーションを起動したり、ファイルを操作するコマンドを指定することで、バッチファイルを起動するだけで、複雑なコマンド入力を自動化できます。