バッチファイルコンパイラ「BATCP」のご紹介


 さてさて、なんだかこのタイトルからしてこのnは怪しそうな気がしますね。そうです、ここでは、ちょっとMS-DOSの世界に足を踏み入れた人なら誰でも知っているであろう怪しげなツール「バッチファイルコンパイラ」のご紹介でございます。


バッチファイルってなに?


 MS-DOSを利用していると、いろいろと面倒なコマンドを毎回入力しなければならないと言う場面があります。こんな時にとても便利なのがバッチファイルという正体不明な変なファイルです。このファイルはテキスト形式のファイルでありながら、プログラムのような動作をするファイルです。たとえば、ゲームというディレクトリをつくってゲームソフトをそこにまとめて入れておいたとします。そうなると、TomGというゲームをやるのに、以下のようにいちいち入力しなければならないことになります。


A:\>CD GAME リターンキー

A:\GAME>TOMG リターンキー

(ゲームが終了したら)

A:\GAME>CD \ リターンキー

 これはかなり面倒です。
 そこで、こんな面倒くさいことはコンピュータのご主人様である私たちがやらなくていいような方法があります。つまり、この入力もコンピュータに代理で行わせるのです。
 具体的には、以下のようなTOMG.BATというファイルを作成します。


@ECHO OFF
CD \GAME
TOMG
CD \


 作成したら、コマンドラインから次のように入力します。

A:\>TOMG リターンキー

 いかがですか?ちゃんと実行できましたでしょうか?
 バッチファイルというのは、こんな風にキーボードからの面倒な入力を代行させるファイルです。しかし、MS-DOSには、このバッチファイルを利用して、簡単なプログラムを作成できるようなコマンド(バッチファイル専用コマンド)が用意されています。これらについては暇なときに「今更バッチファイル講座」とでも題して講座でも書いてみようと思います。

バッチファイルの欠点


 このように便利なバッチファイルなのですが、どうもこの拡張子の".BAT"ってのは気にくわないものです。これではせっかくおもしろいプログラムを造ったとしても、それをMS-DOSをちょっと知っている友人に自慢しようものなら、
「な〜んだ、ただのバッチファイルじゃないかー」
とばれてしまいますし、これでは格好が付きません。
 しかも、バッチファイルでは、すぐにTYPEコマンドやエディタなどで内容をのぞかれてしまいます。これでは「アドベンチャーゲーム」などの中身をみられては困るようなおもしろいプログラムは作成できません。実は他でもない私が、そのおもしろくない経験の持ち主なのです。
 そこでTomG君、いろいろと考えます。
「バッチファイルを何とか暗号化するツールはないものだろうか・・・」
「でも、いやまてよ、これでは拡張子が".BAT"になっちゃうからめざとい友達の□君にはあっさりとばれちゃうなあ・・・」
「そうだ、バッチファイルをなんとかふつうの実行ファイルに変換するプログラムがあればいいんだ!!」
ということで、いろいろと探してみましたら、お望みのツールが存在していたのです。


バッチファイルコンパイラのお出まし!!


 さてさて、いよいよこの「バッチファイルコンパイラ」なる不思議なツールの参上です。ここまで読んでくださったあなた、友達に「俺はプログラムができるんだぞ!!」と自慢するチャンスです。ここをクリックした瞬間から、あなたもプログラマの一員です。


早速使ってみよう!!


 それではさっそくこの便利なバッチファイルコンパイラとやらを使ってみることにしましょう。
 ダウンロードしたBATCP134.LZHをカレントディレクトリに用意して、次のように実行します。

A:\>LHA E BATCP134.LZH リターンキー

 すると、カレントディレクトリにBATCP.COMとBATCP.DOCの二つのファイルが解凍されます。
 えっ、何ですか?
「コマンドまたはファイル名が違います.」
と表示されて先に進めないですって!!あれれれ、それはLHAがインストールされていませんね。ここからダウンロードしてください。

 それでは早速バッチファイルを通常のプログラムのように変換してみましょう。次のようなバッチファイルを造ってください。ファイル名はTEST.BATとして話を進めます。


@ECHO OFF
ECHO Hello World!


 バッチファイルができましたら、次のようにしてください。

A:\>BATCP TEST.BAT リターンキー

 あれ?さっきまではバッチファイルだったのに、まか不思議、カレントディレクトリをDIRなどしてのぞいてみてください。ななななんと、TEST.COMなる立派な実行ファイルが生成されています。
 もちろん

A:\>TEST リターンキー

とすることで、ちゃんと動いてくれます。

 しかし・・・これではまだまだです。このTEST.COMはこのままではやばいんです。それは次のように確かめてみてください。

A:\>TYPE TEST.COM リターンキー

 なにやら訳の分からない文字列が表示されます。「そりゃそうだろうな、おまえ、バイナリをタイプできるのか!!」と聞こえてきそうですが、目を凝らして最後の方をご覧ください。


@ECHO OFF
ECHO Hello World!

 なんだかどこかでみたような文字列です。
 そうなんです、このままではファイルの中身は暗号化できていません。そこで次のように実行してみてください。

A:\>BATCP -P TEST.BAT [パスワード] リターンキー

 この[パスワード]には、任意の半角英数8文字を入れてください。暗号化されたファイルを元のバッチファイルに戻したいときに、このパスワードが必要になります。しかもパスワードを打ち込まないでコンパイルすると、元に戻せませんのでご注意ください。


バイナリファイルの取り込み


 バッチファイルというのは、MS-DOSでのコマンド入力を自動で行うものです。ですから、バッチファイルの中で使うコマンドは、常に実行可能でなければなりません。これはどういうことなのでしょうか?そうです、せっかくバッチファイルをコンパイルしてバイナリ形式のかっこいい拡張子の実行ファイルになっっても、その実行ファイルに必要なコマンドがあれば、それも同時に配布したりしなければなりません。ということは、ちょっとバッチファイルを知っている人には「もしかして・・・」なんて怪しまれてしまいます。これではせっかくバッチファイルをコンパイルしてかっこよくした意味がありません。そこで、その必要なコマンドで、BATCPに対応したものを取り込んでしまうオプション"-B"が用意されています。
 取り込み可能な有名なコマンドとしては、バッチファイルで使えばかなりいろいろなことができるようになるユーティリティ「BU.COM」と言うのがあります。これを使えば、たとえばバッチファイルの中で文字入力を求めるような複雑なバッチファイルを作成することができます。持っていない人はこちらからダウンロードして使ってみてください。手放せなくなります。BU.COMを利用したバッチファイルの例としては、次のようなものがあります。
 ここでは仮に以下のバッチファイルを「NAME.BAT」とします。


@ECHO OFF
ECHO これはテストファイルです。
BU -nNAME LINEINPUT 名前を入力してください:
IF "%NAME%"=="" GOTO ERR
ECHO あなたの名前は%NAME%さんですね。
GOTO END
:ERR
ECHO 名前を入力しませんでした。
:END


 このバッチファイルと、BU.COMを準備して、次のようにします。

A:\>BATCP -B -p NAME.BAT リターンキー

 これでもう、このバッチファイルは単独で動くことができます。BU.COMは必要なくなります。

バッチファイルの復活


 一度EXEやCOMなどのプログラムファイルに変換してしまったバッチファイルを無くしてしまっても、ちゃんと元のバッチファイルを復活させることができます。例えば、先ほど変換したNAME.COMをNAME.BATに直してみましょう。次のようにします。

A:\>BATCP -R NAME.COM パスワード リターンキー

 ここで入力するパスワードを忘れてしまうとせっかく作ったバッチファイルを復活できませんので、くれぐれもパスワードを忘れないように気をつけてください。


終わりに


 いかがでしょうか?このバッチファイルコンパイラがあれば、簡単なアドベンチャーゲーム程度のプログラムなら作成できるはずです。さあ、何かおもしろいげーぬでも造って遊びましょう!!

DOSの部屋へ戻る

トップページに戻る