今回は、コマンドラインを使用する大きな目的の1つであるスクリプト(バッチファイル)に注目する。
前回まではコマンド プロンプトの基本的な使い方を解説したが、今回からは、コマンド プロンプトを使う大きな目的の一つである、スクリプト(バッチ ファイル)について見ていくことにする。
コマンド プロンプトの使い方の1つは、ユーザーが直接コマンドを打ち込んで何らかの処理を行うものだが、もう1つの使い方としてスクリプト ファイルを使った処理がある。簡単にいうと、スクリプト(script、台本という意味)とは、コマンドをあらかじめ記述したファイルを用意しておき、それを使ってコマンドを(人手を介さずに)連続実行させるものである。ある意味プログラムの1種でもあるので、スクリプトを記述することをプログラミングと呼ぶこともある。
ただし一般のプログラムは、ワープロや表計算といった高度なアプリケーションの開発も含まれるが、スクリプトは、プログラムのうち、簡易な機能のものを指していうことが多い。同様の言葉として「マクロ(macro)」という用語もあるが、これも場合によってはスクリプトと同義である。しかし一般にマクロといった場合、条件判断を含まないもっと単純な処理を指すことが多い。例えば、ユーザーのキー入力シーケンスを覚えて、それを再生する(同じ入力を再現して、同一の処理を行わせる)「キー マクロ」などがある。ただしマクロと呼ばれているものすべてが条件判断などの機能を持たないわけではない。プログラムのうち比較的単純で簡易なものをスクリプトやマクロといい、マクロは、その中でどちらかというとさらに簡単なものを指していうことが多いということだ。
また従来のMS-DOSからの習慣で、コマンド プロンプトで実行可能なスクリプトを「バッチ(batch、ひとかたまり、という意味)」と呼ぶことがある。これは、PC以前のコンピュータで、オンライン処理に対する言葉として使われていたものである。こちらは、コンピュータの利用効率を上げるために、あらかじめ作業内容を指定しておき、それらを連続的に実行させることをいう。
コマンド プロンプトでは、16bit環境であるcommand.comも実行可能なので、こちらのスクリプトは、習慣に従うとバッチ ファイルと呼ばねばならないが、ここでは全体を通してスクリプトという用語を使うことにする。
またスクリプト中では、記述されたコマンドを「文」または「ステートメント」と呼ぶ。コマンドをユーザーが打ち込んだものを「入力行」と言うように、機能であるコマンドそのものではなく、引数などが指定された具体的なコマンドの文字列のことをいう。
前述したようにスクリプトとは、コマンド プロンプトから入力可能な複数のコマンドをテキスト ファイル内に記述しておき、これをまとめて実行するものである。例えば、
copy c:\file1.txt c:\backup
copy c:\file2.txt c:\backup
という2行のテキストを“bup.cmd”という名前のファイルに書き込んでおけば、これはファイルをコピーするスクリプトになる。ファイルを作成・編集するにはメモ帳アプリケーション(もしくはワードパッドでテキスト ファイルとして保存する)が利用できるが、ほかにお気に入りのテキスト エディタがあるならば、それを使ってもよい。なお、拡張子「.cmd」の代わりに「.bat」を使うことも可能である。これはMS-DOSのバッチ ファイル時代からの名残である。
このスクリプトを実行するには、コマンド プロンプト上で
bup.cmd
と入力してリターン キーを押すだけでよい。先の2つのcopyコマンドが自動的に連続して実行されるのが分かるだろう(実行中のコマンド ラインをいちいち表示させないようすることもできるが、これについてはいずれ連載で取り上げることにする)。スクリプト ファイルを作ることにより、見かけ上コマンド プロンプトの持つコマンドが増えたように見える。このように組み込まれているコマンドとユーザーが作成したコマンド(スクリプト)が対等に見えるところがポイントで、これによりユーザーは、コマンド プロンプトの機能を自由に拡張することができるわけだ。繰り返し行うようなコマンドを入れたファイルを作っておけば、再度実行するときに、ファイル名を指定するだけでよいというのがスクリプトのメリットである。
ところでこのスクリプトを実行するには、拡張子を省略して
bup
と入力してもよいが、この場合、カレント ディレクトリに同名の .EXEや .COMファイルなどがないことが前提になる。同名の実行可能ファイルがあった場合の優先度は、環境変数の“PATHEXT”で指定されている。標準ではこの変数の値は
C:\>set pathext
PATHEXT=.COM;.EXE;.BAT;.CMD;;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
となっているので、優先度が高い順に並べると
組み込みコマンド > .COM > .EXE > .BAT > .CMD > (以下省略)
となる(.WSHなどもスクリプト ファイルの一種であるが、これらについては今後の連載で扱うことにする)。よって、スクリプトファイルには組み込みコマンドと同じ名前やWindows 2000に標準で用意されている外部コマンドと同じ名前を使わないほうが無難である。ただし拡張子を指定すれば、きちんとスクリプト ファイルを指定して実行させることはできるので、まったく利用できないというわけではない。
PATHEXTを変更して、BATやCMDファイルを優先して実行させることも可能だが、こうするとセキュリティ上の問題が発生してしまうことがある。つまり、標準の外部コマンドの代わりに、スクリプト ファイルを実行させることができてしまうのだ。よほど特別な事情がないかぎり、この優先度は変更しないほうがよいだろう(ちなみに、PATHEXT環境変数の初期値を変更するには、[マイ コンピュータ]の[プロパティ]メニューを表示させ、[詳細]タブにある[環境変数]で「PATHEXT」の値を変更する)。
以上のように、繰り返し行うようなコマンドを入れたファイルを作っておけば、再度実行するときに、ファイル名を指定するだけでよいというのがスクリプトのメリットである。
Copyright© Digital Advantage Corp. All Rights Reserved.