バッチファイル(*.bat) のテクニック


私が使っているバッチファイル関係のテクニックを紹介します。DOSに限らず CUIでいろいろやるにはちょっとしたコツが必要ですが、特に一括処理にはCUIの方が便利ですので、目を通して損はしないと思います。

また、実際に私が使用している(のに近い)起動用・終了用バッチファイルをDOS化の関連で置いていますので、解凍して読んでください。


バッチファイルとは

複数のプログラムを順に起動させるとき使われるのがバッチファイルです。

例えば プログラム prog-aを実行し さらにprog-b prog-cと逐次実行させるとき、プロンプトから"prog-a[Enter] prog-b[Enter] prog-c[Enter]" と全部打ち込む必要がありますが、そのかわりに progs.bat というバッチファイルを作れば "progs [Enter]" だけで手作業が終了します。

バッチファイルは hogehoge.exe や hogehoge.comなどの実行ファイルと同様に扱え、拡張子(ピリオドの後に来る3文字)は"bat"です


バッチファイルの作り方

基本的には 実行ファイルを一行一行並べるだけです。

書かれた実行ファイルが 環境変数 path で定めたディレクトリにあれば 実行ファイルのファイル名(拡張子不要)だけ書けば大丈夫です。それ以外の場合はディレクトリまできっちり指定して下さい。


バッチファイル内で使う記号やコマンド

環境変数を設定します。書式は、set env=ahiahi です。お持ちのPCの c:\autoexec.batあたりを見ていただければ早いかと。

バッチファイルの各行を表示させるかどうか決定します。 echo onなら表示、echo offなら非表示です。

また任意の文字を画面に出力させることもできます。例えば echo ahiahi とすれば画面に ahiahi という表示が出ます。onoff など一部の文字は出力できませんが、このばあいはダブルクオテーションで括って下さい。

ファイルの出力先を指定します。>file.txt ならファイルfile.txtに書き込み(元々のfile.txtは消去)、>>file.txtならfile.txtに追加(元々のfile.txtの後に追加される)、>nul なら画面に出力しません

この文字を先頭に持ってくると、この行を表示しません。ですからバッチファイルの先頭に @echo off と書けば「全ての行を非表示」という意味になります。

条件分岐に使います。"%env%" (ダブルクオテーションで括る必要がある)のような環境変数、"%1%"のような引数の他に、実行ファイルのDOSへの返値 errorlevelなどがあります。そしてexistのように ここで使われることを前提としたプログラムも存在します。

これは、プロンプトからユーザーが入力した引数です。 たとえばユーザーが hoge.bat ahiahi と入力すると、hoge.bat内の %1という記述は全て ahiahi に変わります。

これは、環境変数(setで定められる)を示します。例えば %path% は環境変数 path(実行ファイルを探すディレクトリ)に相当します。

処理を飛ばす命令で、: と対に使用されます。例えば goto default とある場合、:defaultと書かれた行まで処理をジャンプさせます。

このgotoは ifの帰結部としてよく用いられます。if "%1"=="" goto default と言った具合ですね。

別のバッチファイルを実行し、さらに終わったら処理を戻させる命令です。 普通に next とある場合、(next.comやnext.exeがあればそれを実行しますが) next.batがあればそれを実行し、そしてnext.bat処理が終わればそれでプロンプトに戻ってしまいますが、これを防ぐためのものです。


主頁に戻る