バッチファイルは、複雑なMS-DOSのコマンドを人間に変わってプログラムにやらせてしまおうというのが基本原理になっています。
このため、多くはプログラムの起動のための処理に使われているのですが、もう一つ昔からの利用法として見逃すことのできないのが「プログラムのインストーラとしての利用法」です。
MS-DOSには、Windowsにあるようなレジストリがなく、その代わりに「CONFIG.SYS」と「AUTOEXEC.BAT」というファイルを起動時に毎回読み込むことで、OSの設定を行います。
現在、世の中に出回っているWindowsプログラムのほとんどが、インストーラによってレジストリを書き換えるのと同じように、MS-DOSのソフトも細かなユーティリティをのぞき、便利に使うためにこれら二つのファイルをインストール時に書き換えてあげる必要があります。
この賞では、ファイルへの追加書き込みとその書き込み内容をファイルから削除する方法をご紹介します。
ファイルへの追加書き込み
バッチファイルを利用して、既存のファイルに文字列を追加書き込みするためには、MS-DOSのリダイレクト機能を利用します。
たとえば、ファイル「TEST.TXT」に「こんにちは」という文字列を追加書き込みするためには、バッチファイルの中で以下のように記述します。
ECHO こんにちは>>TEST.TXT
これを利用して、「CONFIG.SYS」や「AUTOEXEC.BAT」にプログラムの動作に必要な情報を書き込んだりするのです。
書き込み内容の削除
インストールプログラムがあるならば、やはりアンインストールプログラムというのもあった方が便利です。
アンインストールプログラムに必要なテクニックが、特定の文字列を含む行をこれら二つの設定ファイルから削除する操作です。
ファイルの中から特定の文字列を含む行を削除するためには、「FIND」コマンドの「/V」オプションを使います。
本来「FIND」コマンドというのは、ファイルから特定の文字列を含む行を検索して画面に出力させるものですが、「/V」オプションをつけて利用すると、逆の動作をすることができます。
先ほど「TEST.TXT」に書き込んだ「こんにちは」という内容を削除するためには、バッチファイルの中で以下のように記述します。
FIND /V "こんにちは" TEST.TXT >TEMP.TXT
COPY /Y TEMP.TXT TEST.TXT >NUL
DEL TEMP.TXT
上の記述は、ファイル「TEST.TXT」の中から、まず文字列「こんにちは」を含まない行を「TEMP.TXT」に出力しておきます。
リダイレクト処理というのは、コマンドを実行しながら行われますので、一度作業ファイルに出力してから上書きコピーする形をとらないと、誤動作を起こしてしまう可能性があるので、
FIND /V "こんにちは" TEST.TXT >TEST.TXT
のような記述は絶対にしないでください。
環境変数への追加記入
インストールやアンインストールを行う上で、もう一つ必要な作業があります。
それは、環境変数への値の追加です。
具体的には、MS-DOSがコマンドを検索する際に参照する「PATH」に、プログラムのインストール先を追加したりすることが多く行われます。
環境変数「PATH」に、値「C:\UTILITY」を追加設定するには以下のように記述します。
SET PATH="%PATH%C:\UTILITY"
しかし、これではPATHとしては機能しないので、PATHに限っては、
SET PATH="%PATH%;C:\UTILITY"
の用にするのが一般的です。
ここまで書いてきましたが、MS-DOSが使われなくなった現在では、こんなことをする必要はほとんど無くなっています。
そんなわけで、例文をあげようとしたのですが、あまり具体的なことは思い浮かびませんでした。