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=(パス名);(パス名);(以下続く…」と記述してください。「;」は区切り記号
です。
Copyright 1997 JSRC<Yoshinori_Hayashi>