CONFIG.SYS/AUTOEXEC.BAT
リファレンスマニュアル

AUTOEXEC.BATとCONFIG.SYS、このファイルはシステムの快適さを左右すると言っても過言ではありませんが、いかんせん取っつきにくいので初期設定のままになっている人もいるのではないでしょうか。今回はこの両ファイルの命令を解説します。

●はじめに

CONFIG.SYSとAUTOEXEC.BAT。パソコンを持っている人なら一度はどこかで見たことがある単語だと思います。これらのファイルはMS-DOSでは環境の設定や起動時に使われる非常に重要なファイルです。このふたつのファイルをマスターすることは即ち、MS-DOSをマスターする事に他なりません。
では、具体的に両ファイルはどんな時に使うのでしょうか…?


CONFIG.SYS
このファイルは、パソコンの起動時のみに読み込まれます。MS-DOSが起動時に読みますので、一度起動してしまえば再起動しない限り再び使うことはありません。逆を言えば、CONFIG.SYSを編集してもその効果を反映させるためには再起動が必要ということになります。

まずこのファイルには、MS-DOSの各種パラメーターを記述することが出来ます。これらを書かなくてもMS-DOSはディフォルト(初期設定)の値を選択するので問題はないのですが、自分の好みにあわせてカスタマイズしたいときに記述します。
次に、デバイスドライバという拡張プログラムをMS-DOSに読み込むための命令を記述することができます。何もしない状態のMS-DOSではマウスも使えませんし、日本語も入力出来ません。それらを実現する拡張プログラム(デバイスドライバ)を組み込むためには、ここでその旨を記述せねばなりません。
これらはシステムの操作性・快適性そのものに響きますので、設定の如何によっては昔の旧機種(386/486マシーン)でもそれなりの仕事が出来る場合もあります。
また、ゲームをやろうとしたときに「メインメモリが足りません」というエラーが出ることがありますが、この問題も大抵はCONFIG.SYSファイルを編集することで解決できます。

AUTOEXEC.BAT
このファイルはシステムの設定に直接関与はしません。拡張子から判別できるのですが、このファイルはバッチファイルと呼ばれるMS-DOSコマンドを一度に連続的に実行するためのファイルです。
通常DOSコマンドはキーボードから打ち込みますが、バッチファイルにDOSコマンドや起動させるプログラムを記述して、そのバッチファイル名を打ち込めばそこに書かれているコマンドを連続で実行してくれるのです。

例えば、フロッピーディスクをフォーマットしてからA:\の内容をCドライブのフロッピーディスクにコピーするには普通は以下のコマンドをそれぞれ打たなければなりませんが、
FORMAT C:
COPY A:\ C:\

そのコマンドをバッチファイルとして記述すればそのバッチファイルを実行するだけで上のふたつのコマンドを連続で実行してくれるのです。今の例ですとたったふたつのコマンドですが、複雑なことをやるときに威力を発揮します。
話がずれてしまいましたが、AUTOEXEC.BATとは「起動時に自動的に一度実行されるバッチファイル」なのです。なお、AUTOEXEC.BATはCONFIG.SYSより後に実行されます。
よって、起動時に一度だけ実行すればいいプログラム、例えばディスクキャッシュ・CD−ROMドライバの組み込みやパスの指定、いつも使っているファイラーなどを記述しておけばよりパソコンの扱いが楽になるでしょう。初期設定のパソコンでは大抵最後の行あたりにWINと書いてあって、勝手にWINDOWSが起動するようになっているはずです。


なお、CONFIG.SYSもAUTOEXEC.BATもテキストファイル(ワープロ等で読める形式)で記述されています。そして、両ファイルともブートドライブ(起動させたドライブ)のルートディレクトリに置く必要があります。
テキストファイルですので編集に特別なソフトは必要ありません。テキストファイルが読み書きできるワープロやテキストエディタがあればOKです。また、コマンドを記述するときは必ず半角英数文字で記述して下さい。日本語の全角文字では認識されません。
また、この次からのコマンドリファレンスの書式は以下のようになっています。
[]	省略可能なオプション
()	任意のパラメーターを記述
|	これで区切られたオプションはどれかひとつを排他で選択する
{}	必須パラメーター
用例は複数パターン載せています。

●CONFIG.SYSの場合

BREAKCTRL+Cの有効範囲の設定 書式 BREAK=[OFF|ON] MS-DOSにおいてコマンド、及び一部のプログラムでは実行中にCTRL+C(又はSTOP)を押す ことでその実行を中断できます。このBREAKコマンドは、どのようなときにCTRL+Cを有 効にするかを設定します。 オプション OFF キーボードからの入力中、ディスプレイへの表示中、プリンタへの印刷中、シ リアルポート(RS-232C)の転送中の時だけ中断できるようにする ON OFFで中断できる機能に加え、その他の入出力中にも出来るようにする コマンド省略時はOFFを設定したことになります。ただ、ONにするとシステムの速度が 僅かながら低下するので普通はONにする事はありません。記述しなくてもいいコンフィ グコマンドのひとつです。 用例 BREAK=ON BREAK=OFF
BUFFERSディスクバッファー数の設定 書式 BUFFERS=(n)[,(m)] MS-DOSがハードディスクとのやり取り(読み書き)をするときには、その都度読み書き をせずにある程度のデータがたまってから行います。こうすることでディスクアクセス の回数を減らしてシステムのスピードを向上させているのです。このBUFFERSコマンド では、その「ある程度のデータがたまってから」の”ある程度”の量を決めてやるコマ ンドです。 オプション n ディスクバッファの数(1-99)を設定する m 先読み用ディスクバッファの数(1-8)を設定する ディスクバッファ1つ分の消費メモリ量は使用するハードディスクによって違います。 また、以外とこのディスクバッファーがメインメモリを食いますのであまり大きい値に する必要はありません。大体10くらいあれば十分です。 また、ディスクキャッシュを併用する場合はBUFFERSは極力少ない方がいいでしょう。 ゲームなどを起動したいときにメインメモリが足りない場合もまずBUFFERSから減らし ます。5でも支障は無いはずです(我が家はそうである)。 このBUFFERSは省略するとディフォルトとして20が取られるので極力指定するようにし ましょう。先読みディスクバッファの数は省略しても構いません。よけいメモリを食う だけですから。 用例 BUFFERS=10 BUFFERS=5,8
DEVICEデバイスドライバの組み込み 書式 DEVICE=[(パス名)] (ファイル名) [(デバイスドライバのオプション)] DEVICEコマンドは、デバイスドライバと呼ばれる拡張プログラムをMS-DOSに組み込むた めのコマンドです。DEVICEコマンドひとつでひとつのデバイスドライバを組み込むこと が出来、複数のデバイスドライバを組み込むときはそのデバイスドライバの分だけDEVIC Eを記述しなければなりません。 また、キャラクタ系デバイスドライバと呼ばれるデバイスドライバ(MOUSE.SYSやPRINT.S YS、RSDRV.SYSなど)はこのDEVICEコマンド以外にもDOSコマンドのADDDRVコマンドで も組み込むことが出来、その場合には不要になったデバイスドライバを外せるというメ リットがあります。AUTOEXEC.BATで記述しておけばCONFIG.SYSのDEVICEコマンドで組み 込んだのと変わらない状態になるでしょう。 オプション 詳細はデバイスドライバの説明書をご覧下さい 用例 DEVICE=A:\DOS\MOUSE.SYS DEVICE=A:\WINDOWS\EMM386.EXE /UMB /P=64 DEVICE=B:\DOS\HIMEM.SYS DEVICE=A:\JUST\ATOK8\ATOK8.SYS
DEVICEHIGHデバイスドライバをUMBに組み込む 書式 DEVICEHIGH=[(パス名)] (ファイル名) [(デバイスドライバのオプション)] DEVICEHIGH SIZE=[(パス名)] (ファイル名) [(デバイスドライバのオプション)] 目的のデバイスドライバをUMBメモリに組み込む以外は上記のDEVICEコマンドと全く同 じです。デバイスドライバをUMBメモリに組み込むと、メインメモリを消費しなくて済 むためにメインメモリの空きが多く取れます。ただ、このDEVICEHIGHを使う前に前提条 件として以下のコマンドを先に実行(記述)しなければなりません。 DOS=UMB DEVICE=\DOS\HIMEM.SYS DEVICE=\DOS\EMM386.EXE /UMB このコマンドはCPUが386以上でなくてはなりません。 また、開いているUMBメモリの量以上のメモリを消費するデバイスドライバを組み込も うとするとハングアップすることがありますが、その場合にはあらかじめそのデバイス ドライバが消費するメモリ量を記述することでハングアップを回避することができます。 それがDEVICEHIGH SIZE=コマンドです。SIZE=の後には使用メモリ量を16進数に直し た値が入ります。ただ、普通はこれを指定する必要はないでしょう。私自身今まで知り ませんしたし(^_^;)。 オプション 詳細はデバイスドライバの説明書を参照 用例 DEVICEHIGH=A:\DOS\PRINT.SYS DEVICEHIGH=A:\DOS\RAMDISK.SYS DEVICEHIGH SIZE=40E0 A:\DOS\ATOK8.SYS
DOSMS-DOSのロード先メモリとUMB使用の設定 書式 DOS=[{LOW|HIGH}] [,{NOUMB|UMB}] このコマンドは、MS-DOSのシステムをどこのメモリにロードするかとUMBを使うかどう かを設定します。 このコマンドを省略するとディフォルトとして「DOS=LOW,NOUMB」を選択したこととな り、MS-DOSのシステム自体はメインメモリを使用します。また、UMBを使うことは出来 ません。ですが、「DOS=HIGH,UMB」とするとMS-DOSのシステムの一部がHMAメモリとい う領域に退避するのでメインメモリの空きが増えます。また、UMBを使用可能とするこ とでデバイスドライバをUMBメモリに移動させ、これまたメインメモリを空けることが 出来ます。しかし、UMB自体80386以上のCPUでなくては使用できないので286マシー ンではその恩恵にあずかることはできません。 よって、386以上のマシーンでは普通「DOS=HIGH,UMB」となっているはずです。それ以 外のオプションを選ぶ状況というのはまず無いでしょう。 オプション LOW MS-DOSのシステムをメインメモリにロードする HIGH MS-DOSのシステムの一部をHMAメモリにロードする NOUMB UMBを使用しないようにする UMB UMBを使用できるようにする 用例 DOS=HIGH DOS=NOUMB DOS=HIGH,UMB DOS=LOW,UMB DOS=LOW,NOUMB
FCBSFCBSを使ったファイルオープン数の設定 書式 FCBS=(n) これは昔のMS-DOSで使われていたオプションで、互換性のために残してあるものです。 MS-DOSではファイルオープンの方法として、「FCBを使った方法」と「ファイルハンド ル」を使った方法があります。ですが、「FCBを使った方法」だったのは初期のMS-DOS での話。MS-DOS Ver2.00からは「ファイルハンドル」と言う方式になったので、今では 全く使われていません。従って、最も必要のないオプションです。 とはいえ、初期設定ではFCBS=4と記述したことになるのでその分メモリを食います。絶 対使わないと分かっているのですからFCBS=1としておくのがメモリの節約になっていい でしょう。 オプション n オープンしたいFCBの最大数(1-255)を設定する 用例 FCBS=1 FCBS=4
FILES使用するファイルハンドルの数を設定する 書式 FILES=(n) これは、先程のFCBSの所で出てきた「ファイルハンドルを使ってファイルをオープンす る」方の場合の設定です。今は全てこっちの方法になっています。 ここで指定した数だけ同時にファイルをオープンできるという物なんですが、普通はそ んなことを意識しないでしょう。このFILESの場合は数を多めに指定してもメモリの消 費はわずかなので、大体20〜30位を指定しておきましょう。 ちなみに初期設定ではFILES=8を指定したのと同じことになります。が、これでは少々 少ないので自分で指定しましょう。エコロジー3などはFILES=20以上無いと起動しなか ったりします。 オプション n オープンしたいファイルハンドルの最大数(8-255)を設定する 用例 FILES=8 FILES=30
INSTALL常駐型プログラムのロード 書式 INSTALL=[(パス名)] (ファイル名) [(オプション)] これは、普通はAUTOEXEC.BATに記述して実行させる常駐型ドライバや常駐型コマンドを CONFIG.SYSの中で実行できるようにするものです。 AUTOEXEC.BATで用が済むのになんでそんな無駄なことをするかというと、AUTOEXEC.BAT だけを後でもう一回実行させたい場合があったとします。そんなときにもう一回常駐型 デバイスドライバを組み込もうとしてしまうとエラーになる場合があるからです。 そのような一回だけ組み込めばいい常駐型デバイスドライバはCONFIG.SYSで記述してお けば複数回組み込もうとしてしまう心配はなくなります。(CONFIG.SYSは起動時に一回 しか読み込まれないため) ですが、普通は二回AUTOEXEC.BATを実行することは少ないでしょうし、常駐型デバイス ドライバを組み込むこと自体少ないと思うので、このコマンドにお目にかかる機会は少 ないでしょう。 なお、普通は以下のDOSコマンドを組み込むのに使用されます。 APPEND.EXE DOSKEY.COM FASTOPEN.EXE MIRROR.COM MOUSE.COM PRINT.EXE SHARE.EXE など ただしINSTALLコマンドで組み込んでしまうと、MOUSE.COMなど本来は使用後に常駐を解 除出来るはずのドライバも解除できなくなってしまうので注意が必要です。後で常駐を 解除する可能性があるときはAUTOEXEC.BATで記述しておきましょう。 オプション パス名 組み込みたい常駐型ドライバのパス名 ファイル名 組み込みたい常駐型ドライバのファイル名 オプション 組み込みたい常駐型ドライバのオプション 用例 INSTALL=A:\DOS\FASTOPEN.EXE A:=128 B:=128 /E INSTALL=A:\DOS\PRINT.EXE INSTALL=A:\DOS\MOUSE.COM
LASTDRIVE使用するディスクドライブ数の設定 書式 LASTDRIVE=(n) MS-DOSで使用するディスクドライブ数の最大値を指定します。指定しないときはディフ ォルトとして現在接続されているドライブの最大値が自動的に選択されます。また、ド ライブが4つ以下しか接続されていないときはディフォルトはLASTDRIVE=Eに設定され ます。 接続するドライブとしては、ハードディスク・フロッピードライブ・RAMディスク・ 仮想ドライブ・CD-ROM等ありますが、特に仮想ドライブなど実際に物理的に繋がってい る以上のドライブを使いたいときにこのLASTDRIVEを指定します。 CD-ROMドライブは通常Qドライブになっていますが、これをフロッピードライブの次の ドライブにして、LASTDRIVEでそのドライブ名を記述すれば多少のメモリの節約になり ます。第一、何でCD-ROMの初期設定ってQドライブなんでしょうね?別にフロッピード ライブの後でも構わないと思うんですが… オプション n ディスクドライブとして認識させたい最大ドライブ名(A-Z) 用例 LASTDRIVE=F LASTDRIVE=Q
REM注訳を付ける 書式 REM (注訳) これは、CONFIG.SYS中で注訳を書くためのコマンド?です。行の初めに「REM」を挿入 すればそれ以降の同じ行のコマンドやメッセージはシステムに認識されません。したが って、自分がわかりやすいように説明を付けたり一時的に使わないCONFIGコマンドの前 に挿入してそのコマンドを使わない等の使用法があります。 オプション 注訳 任意のメッセージやカットしたいCONFIGコマンド 用例 以下の紫字はシステムから無視されます。よってREMの後になにを書いてもムダです REM CD-ROMドライブはQドライブにすること REM Windows設定用コンフィグ REM A:\DOS\NECCD.SYS REM A:\ATOK8\ATOK8.SYS /UCF=A:\ATOK8\ATOK8.UCF
SHELLコマンドプロセッサの設定 書式 SHELL=[(パス名)] (ファイル名) [(オプション)] SHELLコマンドは本来、COMMAND.COM以外のコマンドプロセッサを利用するためにあった ようです。が、現在ではCOMMAND.COMの設定用に利用される場合がほとんどです。 このコマンドを省略すると、ディフォルトとして次のように設定されます。 ・COMMAND.COMを起動ディスクのルートディレクトリからロードする ・プログラムを実行し終わるたびに、非常駐部をカレントディスクから再ロードする ・環境変数用として使えるメモリサイズは256バイトとなる ですが、普通に使っていてこのディフォルトで困ることはほとんど無いと思います。 まあ、敢えて言えばフロッピーで起動したときとかに「COMMAND.COMが見つかりません」 と言われる位じゃないでしょうか。そんなときはハードディスクのCOMMAND.COMを指定 しておけばエラーは出なくなります。それに起動ディスクのルートディレクトリにCOMMA ND.COMが無い人も珍しいでしょうし、環境変数のメモリサイズも普通の人は関係ありま せん。 オプション ファイル名 ここで指定したコマンドプロセッサが使われます。よって、起動ディ スクのルートディレクトリにCOMMAND.COMが無くても起動させることが 出来ますが、普通はそんなことしないでしょう。 オプション COMMAND.COMを使う場合は(普通はそうだ)、ファイル名に続けてオ プションを記述することでCOMMAND.COMについての設定が出来ます。 ・さらにパス名 この設定は、プログラムを実行し終わったときに再ロードす るCOMMAND.COMの場所を指定します。ハードディスクのCOMMAN D.COMを指定しておけばフロッピーのソフトを終わらせた後に 「COMMAND.COMが見つかりません」と怒られることも無いで しょう。 ・/P このオプションを付けると、COMMAND.COMが常駐します。 EXITコマンドを実行しても起動時のCOMMAND.COMを抜けられ ないようになります。が、普通は関係ないでしょう。 ・/E:値 環境変数用のメモリサイズを指定します。 通常は256バイトですが、SETコマンドやPATHコマンドにおい て環境変数用のメモリが不足するときは自分で指定します。 が、これまた普通は関係ないオプションです。 まあ、結論としてこのSHELLコマンドも要らないコンフィグコマンドのひとつですね。 用例 SHELL=A:\COMMAND.COM SHELL=A:\DOS\COMMNAD.COM A:\DOS\ SHELL=A:\COMMAND.COM A:\ /P /E:512
実際のCONFIG.SYS
以上のコマンドを組み合わせてCONFIG.SYSは出来ています。よって、普通は以下のよう になるのではないでしょうか ----------------------------------------------------------- DEVICE=A:\DOS\HIMEM.SYS DEVICE=A:\DOS\EMM386.EXE /UMB /P=64 BUFFERS=5 FILES=20 FCBS=1 LASTDRIVE=E DEVICEHIGH=A:\DOS\SETVER.EXE DEVICEHIGH=A:\DOS\MOUSE.SYS DEVICEHIGH=A:\DOS\RAMDISK.SYS DEVICE=A:\DOS\NECCD.SYS /D:CD_101 DOS=HIGH,UMB SHELL=A:\COMMAND.COM /P ----------------------------------------------------------- あとはこれに各家庭でご使用のFEP(日本語フロントエンドプロセッサ)を組み込め ばCONFIG.SYSは完成でしょう。CONFIG.SYSコマンドは全て半角英数字で記述して下さい。 大文字でも小文字でもOKですが、全角文字で書いても認識しませんよ。
おまけ:Windows95のCONFIG.SYS専用 Windows95でもルートディレクトリにCONFIG.SYSはありますが、Windows95専用のコンフ ィグコマンドというのも存在します。ここではそれをちらっと説明しておきましょう。 なお、WindowsディレクトリにCONFIG.TXTというテキストファイルがあるので、詳しくは それを見て下さい。
ACCDATEドライブへの最終アクセスの記録設定 書式 ACCDATE={(ドライブ名) +|-} [(ドライブ名) +|-]... ハード ディスクごとに、最後にファイルにアクセスした日付を記録するかどうかを 指定します。コンピュータを Safe モードで起動した場合は、すべてのドライブの 最終アクセス日の設定が無効になります。また、フロッピー ディスクの最終アクセ ス日は、標準では記録されません。しかし、こんなの何に使うんでしょうね? パラメータ ドライブ名 設定するドライブ名を指定します。 +|- 指定したドライブのファイルに最後にアクセスした日付を記録する場 合はプラス記号 (+) を、ファイルに最後にアクセスした日付を記録 しない場合は、マイナス記号 (-) を指定します。 用例 ACCDATE A:+ B:+ ACCDATE A:+ C:-
BUFFERSHIGH,FCBSHIGH,FILESHIGH,INSTALLHIGH,LASTDRIVEHIGH 各コマンドを上位メモリに読み込む 書式 -HIGH=パラメーター 基本的に普通のコマンドと同じですが、そのコマンドにHIGHをつけることで上位メモリ 領域に読み込むので、上位メモリを使う分メインメモリの節約になるでしょう。 パラメータ 各コマンドの項目を参照 用例 BUFFERSHIGH=20 FCBSHIGH=1 FILESHIGH=30 INSTALLHIGH=A:\DOS\MOUSE.COM LASTDRIVEHIGH=F
DOSDOSのロード先メモリとUMB使用の設定 書式 DOS=[HIGH|LOW] [,UMB|NOUMB] [,AUTO|NOAUTO] これもDOSの時と基本的に同じです。ただ、使用できるオプションがひとつ増えています。 パラメータ UMB|NOUMB MS-DOS で上位メモリ(UMB)を管理するかどうかを指定します。 HIGH|LOW MS-DOS プログラムの一部をハイメモリ領域(HMA)に読み込むかどうか を指定します。 AUTO|NOAUTO CONFIG.SYS ファイルで、HIMEM.SYS、IFSHLP.SYS、DBLBUFF.SYS、お よびSETVER.EXE を読み込むように指定しなかった場合に、これらの デバイス ドライバを自動的に読み込むかどうかを指定します。特に 指定しない場合には、AUTO に設定され、これらのデバイス ドライバ が自動的に読み込まれます。また、このパラメータを AUTO に設定す ると、BUFFERS、FILES、FCBS、LASTDRIVE、および STACKS コマンド 使った場合でも、自動的に BUFFERSHIGH、FILESHIGH、FCBSHIGH、LAST DRIVEHIGH、および STACKSHIGH の各コマンドが使われます。パラメ ータ NOAUTO を指定した場合は、上記のデバイス ドライバを読み込 むには、CONFIG.SYS ファイルでそれぞれを読み込むように指定し、 上記の〜HIGH コマンドを使うには、〜HIGH と正確に指定する必要が あります。 まあ、AUTOにすると勝手に各HIGHコマンドを使ってくれるようなので AUTOにしておくのが無難でしょう。 用例 DOS=HIGH,UMB,AUTO DOS=HIGH,UMB,LOW
STACKS/STACKSHIGHスタック領域の設定 書式 STACKS=n,s STACKSHIGH=n,s ハードウェア割り込み処理用のデータ スタックを動的に使用できるようにします。 スタックを上位メモリ領域に読み込むには、STACKSHIGH コマンドを使います。 しかし、普通はスタックなんて聞いたこと無いと思うので無視してもいいでしょう。 パラメータ n スタックの数を指定します。有効な値は 0 と、8 から 64 までです。 s 各スタックのサイズをバイト数で指定します。有効な値は0と(32-512)までです。 用例 STACKS=10 STACKSHIGH=16,32
SWITCHESMS-DOSのオプションを指定 書式 SWITCHES=/F /K /N /E[:n] MS-DOS の特別なオプションを指定します。 スイッチ /F 起動時に表示される "Starting MS-DOS" というメッセージの後の 2 秒間の遅 延時間を省略します。 /N F5 キーまたは F8 キーをで、起動コマンドをバイパスできないようにします。 スイッチ /N を指定しても、Ctrl+F5 キーまたは Ctrl+F8 キーを使って、 DRVSPACE.BIN を省略できます。DRVSPACE.BIN をバイパスできないようにする には、DRVSPACE /SWITCHES コマンドを使って、DRVSPACE.INI ファイルに SWITCHES /N の設定を追加します。 用例 SWITCHES=/F /N
●AUTOEXEC.BATの場合 これから書くことはAUTOEXEC.BATに限らず、すべてのバッチファイルに共通のリファレ ンスです。あくまでAUTOEXEC.BATとは起動時に自動実行されるバッチファイル、という ものですから。
BATKEY一文字入力のキー入力を受け付ける 書式 BATKEY [0|1|2] [(メッセージ)] バッチファイル中でユーザーの入力を待つことができます。これを使うと、バッチファ イルでも複雑な処理をすることが出来ます。 得たキー入力はERRORLEVELという環境変数で取得することが出来ます。 オプション 0 0-9の数値入力をすることができます。返される値は0-9の数値です。 1 Y/Nの選択入力が出来ます。返される値はYのとき0、Nの時は255です。 2 文字の入力をすることができます。返される値は入力した文字の文字コードです。 用例 ここでは例として、アプリケーションの選択起動バッチファイルを取り上げます。 ----------------------------------------------------------- @ECHO OFF :START CLS ECHO ================================== ECHO 事務アプリケーション起動メニュー ECHO ================================== ECHO 0.一太郎4.3 ECHO 1.LOTUS123R2.4J ECHO 2.花子 ECHO 3.終了 BATKEY 0 処理を選択して下さい = IF ERRORLEVEL 0 GOTO JSW IF ERRORLEVEL 1 GOTO LOTUS IF ERRORLEVEL 2 GOTO HANA IF ERRORLEVEL 3 GOTO END GOTO START :JSW CD \JSW\ CALL JSW.BAT GOTO END :LOTUS CD \LOTUS123\ CALL 123.BAT GOTO END :HANA CD \HANA\ CALL HANA.BAT GOTO END :END -----------------------------------------------------------
CALLバッチファイルから他のバッチファイルを呼び出す 書式 CALL [(パス名)] (バッチファイル名) [(パラメーター)] 通常、バッチファイルからバッチファイルを呼び出すと、そのバッチファイルが終了し ても元のバッチファイルに処理が戻ることはありません。しかし、CALLコマンドでバッ チファイルを呼び出すと、その処理が終わった後に親のバッチファイルに処理を戻すこ とが出来ます。簡単なメニューを作るときは必須のコマンドです。 オプション 「CALL ファイル名」に続いてパラメーターを記述すると、呼び出した子バッチファイル へパラメーターが渡されます。子バッチファイルに渡されるパラメーターは%0から%9と いう変数名に変化して渡されます。 用例 BATKEYの用例をご参照下さい
ECHOバッチファイル中のメッセージの表示/非表示 書式 ECHO ON|OFF ECHO (メッセージ) ECHO OFFとすると、これ以降のバッチファイル中で実行されるプログラムなどのコマン ド処理が見えなくなります。逆に、ECHO ONとすると普通に実行しているコマンドが見 えるようになります。ECHO OFFというコマンドそのものも表示させたくない場合は「@EC HO OFF」とアットマークを頭に付けます。バッチファイルでコマンド処理が見えるとか っこ悪いので普通は@ECHO OFFを文頭に付けるでしょう。 また、ECHOの後にメッセージを打つと、それがバッチファイル中で表示されます。ユー ザーにメッセージを送りたいときなどに使用します。 オプション メッセージ 記述したメッセージがそのまま画面に表示されます。 「ECHO.」と打つとただ何も表示せずに改行します。 用例 BATKEYの用例をご参照下さい。
FOR-IN-DOバッチ処理中の繰り返し処理 書式 FOR %%(c) IN ((項目セット)) DO (実行コマンド) ←バッチファイル用 FOR %(c) IN ((項目セット)) DO (実行コマンド) ←コマンドプロンプト用 これは、バッチファイル中で同じ処理をくり返して行うときなどに使用します。 例えば、 FOR %%A IN (A B C) DO DIR %%A*.* というコマンドをバッチファイル中で実行したとすると、AかBかCで始まるファイルを 画面に表示します。これは、カッコの中の(A B C)を順に%%Aという変数の中に入れて、 それをDO以下の命令で順次実行するという意味です。従って、もし単独のコマンドで同 じ効果を持ったバッチファイルを作ろうとすると以下のようになります。 SET A=A DIR %A*.* SET A=B DIR %A*.* SET A=C DIR %A*.* ここで「SET A=A」とか変なことをやっているように見えますが、これは変数AにAという 値を代入しているにすぎません。変数Aはバッチファイル中では「%A」と表記されます。 そうしないとただのAか変数のAかわかりませんからね。 また、変数名は一文字なら何でも構いません。自分が分かる変数名を付けましょう。 用例 例えば、DLLファイルとSYSファイルのリストをREPORT.TXTというファイル名のテキスト ファイルに作るとします。ただし、このバッチファイルはWindowsディレクトリにある ものとします。 ----------------------------------------------------------- @ECHO OFF FOR %%R IN (INI DLL SYS) DO DIR *.%%R >> REPORT.TXT -----------------------------------------------------------
GOTO無条件ジャンプ命令 書式 GOTO (ラベル名) これは、バッチファイル中で処理を無条件ジャンプさせるための命令です。これ無くし て複雑なバッチファイルは作り得ません。単独でジャンプさせる他に、IFコマンドと併 用することで条件分岐命令を作ることが出来ます。 飛び先のラベル名は8文字以内で同じ名前は二度使えません。 用例 ここでは、数字の9を押すまで無限ループし続けるバッチファイルを作ります。 ----------------------------------------------------------- @ECHO OFF :START BATKEY 0 何か数字を押して下さい IF ERRORLEVEL 9 GOTO END ECHO ハズレ! GOTO START :END -----------------------------------------------------------
IF条件判断命令 書式 IF [NOT] (条件) (コマンド) これは条件判断の命令です。(条件)が合っているときに(コマンド)の命令を実行します。 IFの直後にNOTをつけると、条件の判断が反対になります。 文字列の比較の時はイコールの場合のみ判定できます。 例 IF 文字列1==文字列2 文字列1と2が等しいとき IF %1==文字列1 パラメーター1と文字列1が等しいとき IF %環境変数%==%1 環境変数とパラメーター1が等しいとき フォントによっては見にくいと思いますが、文字列比較はイコールふたつ(==)で行い ます。 ファイルの存在の有無を調べることもできます。その場合には、 IF EXIST (ファイル名) (コマンド) IF NOT EXIST (ファイル名) (コマンド) で判定できます。EXISTを入れるとファイルの存在判定になるわけです。もちろんNOTを 入れると「ファイルが存在しないなら」を判定することができます。 また、ERRORLEVELの判定をすることもできます。 IF ERRORLEVEL (数値) (コマンド) とすると、ERRORLEVEL=(数値)の時に(コマンド)を実行します。 DOSコマンドは大抵、処理に成功するとERRORLEVELに0を返してきます。それを判別して 処理が成功したか失敗したかによって後の処理を変えることができます。 用例 BATKEYとGOTOの例もご参照下さい A:\WINDOWS\にWIN.COMがあればC:\INSTALL.COMを実行しない ----------------------------------------------------------- @ECHO OFF IF EXIST A:\WINDOWS\WIN.COM GOTO FAIL ECHO インストールをしています... C:\INSTALL.COM GOTO END :FAIL ECHO このパソコンにはWINDOWSがインストールされています。 ECHO インストールを中止します。 :END -----------------------------------------------------------
PAUSEバッチ処理の一時停止 書式 PAUSE [(コメント)] これはバッチファイルの処理を一時停止するコマンドです。よく、「何かキーを押して 下さい」とか、「Cドライブにディスク1を入れて何かキーを押して下さい」という確 認をするために使われます。 ECHO ONになっていると、コメントが表示された後に「準備が出来たらどれかキーを押 してください」と表示されてしまいかっこわるいので、普通はECHO OFFで使うものでし ょう。また、コメント中に環境変数やパラメーターを記述することもできます。 用例 確認をした後にCドライブに入れたフロッピーディスクを初期化します ----------------------------------------------------------- @ECHO OFF CLS ECHO フロッピーディスク連続初期化プログラム ECHO. :START ECHO フロッピードライブに未初期化のフロッピーを挿入して ECHO 何かキーを押してください PAUSE ECHO フォーマット中です... FORMAT C: /U /M /P GOTO START -----------------------------------------------------------
REMバッチファイル中にコメントを記述する 書式 REM [(コメント)] CONFIG.SYSのREMと使い方は同じです。ECHO OFFの時ならREM以降に書いたコメントは画 面には表示されません。ECHO ONだとREMというコマンドまで見えてしまうのでかっこわ るいです。ECHO OFFで使いましょう。また、コメント中に環境変数やパラメーターを記 述することもできます。 用例 カレントディレクトリ中のファイルを全て表示します ----------------------------------------------------------- @ECHO OFF REM このメッセージは実際には画面に表示されません。 DIR *.* -----------------------------------------------------------
SHIFTバッチファイルのパラメーターの置き換え 書式 SHIFT バッチファイルを実行するときにパラメーターを記述できますが、これらのパラメータ ーはバッチファイル中では%1から%9までに順次格納されています。ちなみに、%0にはフ ァイル名が入ります。 SHIFTコマンドを実行すると、その%1の内容が%0に、%2の内容が%1に、と言うように順次 繰り上がっていきます。これを使うとパラメーターは%0〜%9の10個しか使えないとい う制約を越えて、より多くのパラメーターを利用できるのですが、普通は10個あるパ ラメーターが不足するなんてコトは無いのでこのコマンドはあって無いようなものでし ょう。私自身使っているところを見たことありませんし、自分で使ったこともありません。 用例 このバッチファイルが「SAMPLE.BAT」という名前だとして、オプションを付けて「SAMPL E.BAT 1 2 3 4 5」を実行します ----------------------------------------------------------- @ECHO OFF REM このバッチファイルを実行すると、画面には1から5まで数字が表示されます REM すべてのパラメーターを表示し終わると勝手に終了します :START ECHO %1 SHIFT IF "%1"=="" GOTO END GOTO START :END -----------------------------------------------------------
その他 その他、バッチファイルにはすべての実行プログラム、バッチファイル名を記述して 起動させることができます。 また、バッチコマンドではありませんが、パスの設定をすることもできます。というよ りAUTOEXEC.BATで記述しておかないとめんどくさいですね。その場合にはAUTOEXEC.BAT 中で「PATH=(パス名);(パス名);(以下続く…」と記述してください。「;」は区切り記号 です。
back
Copyright 1997 JSRC<Yoshinori_Hayashi>