Image: CONFIG.SYSのコマンドと特殊な環境変数 [DOS]

せっかく手元にMS-DOSとPC DOSの資料があるので、CONFIG.SYSのコマンドと特殊な環境変数についてまとめてみた。

ここではネイティブなDOS環境を対象にしている。Windows 9x/MeのMS-DOSプロンプトやWindows NT系のNTVDMにもCONFIG.SYSに相当するファイルや特殊な環境変数は存在するが、ここに書かれていることとは事情が大きく異なる。

○CONFIG.SYSとは

CONFIG.SYSはDOSのシステム環境設定用のテキストファイルで、読み込むデバイスドライバやバッファの数といったDOSの基本設定を、使用するアプリケーションやパソコンの構成・性能に合わせて指定しておく。起動時にDOSはそれに従って環境を設定する。その後シェル(通常はCOMMAND.COM)を読み込んでそこに制御を移し、AUTOEXEC.BATを実行してDOSの起動が完了する。CONFIG.SYSによる設定はMS-DOS Ver.2.0以降で有効。

(引用元:『MS-DOS Ver.5.0 オペレーティングハンドブック』、技術評論社、1992年)

○CONFIG.SYSの設定方法

CONFIG.SYSはDOSのシステムと同じドライブのルートディレクトリにある。(Aドライブから起動した場合はA:\CONFIG.SYS)。CONFIG.SYSの中身は普通のテキストファイルなのでテキストエディタで編集すればよい。MS-DOS Ver.5.0以降ではEDITコマンド、PC DOS Ver.6.1以降ではEコマンドでスクリーンエディタを利用できる。NEC PC98用MS-DOS Ver.3.1以降ではメニュー選択方式でCONFIG.SYSを作成・編集できるCUSTOMコマンドが用意されている。古いバージョンのDOSだとEDLINというラインエディタ(テレタイプ端末の利用が一般的だった頃のエディタの方式)で編集することになる。
EDITTE
CUSTOMSEDIT

基本的には「コマンド=設定値」の形式で入力する。コマンドは最初の行から順に適用されるため、同じコマンドが存在する場合は後の行のコマンドの設定値が優先される。(DEVICE、DEVICEHIGH、INSTALLを除く。)

○CONFIG.SYSのコマンド一覧

BREAK
対象 MS-DOS Ver.2.0以降
機能 Ctrl+Cキーが押されたときのチェック機能の設定と解除
書式 BREAK ON|OFF
BREAK=ON
補足 プロフラムの処理中にCtrl+Cキーによる処理中断を受け付けるかどうか。
BUFFERS
対象 MS-DOS Ver.2.0以降
機能 指定した数のディレクトリ情報用のキャッシュメモリを割り当てる
書式 BUFFERS=n[,m]
n ディスクバッファの数を1から62の範囲で指定。
m 2次ディスクバッファの数を1から8の範囲で指定。
BUFFERS=15,1
補足 バッファが多いほどディスクアクセスが速くなるが空きメモリが減少する。
消費メモリサイズ=バッファ数×最大クラスタサイズ
COUNTRY
対象 MS-DOS Ver.3.0以降
機能 特定の国で使われている時間、日付、通貨表現を指定
書式 COUNTRY=xxx[,[yyy][,[ドライブ:]ファイルパス]]
xxx カントリーコードを指定する。日本の場合は081。
yyy コードページを指定する。日本語の場合は932。
パス 国別の情報を含んだファイルの場所を指定する。
COUNTRY=081,932,C:\DOS\COUNTRY.SYS
補足 Windowsのコントロールパネルで言う所の「地域オプション」に相当。
日本語版のDOSの場合、コードページとして指定できるのは欧米諸国の1バイト言語と日本語のみ。
アラビア語や中国語などの他の2バイト言語のサポートにはそれぞれに対応したDOSが必要になる。
DEVICE
対象 MS-DOS Ver.2.0以降
機能 指定したインストール可能なデバイスドライバをメモリに読み込む
書式 DEVICE=[ドライブ:]ファイルパス [パラメータ]
DEVICE=C:\DOS\JFONT.SYS /P=C:\DOS\
DEVICEHIGH
対象 MS-DOS Ver.5.0以降
機能 指定したインストール可能なデバイスドライバをUMBメモリに読み込む
書式1 DEVICEHIGH=[ドライブ:]ファイルパス [パラメータ]
書式2 DEVICEHIGH=[/L:領域1[,最小サイズ1][;領域2[,最小サイズ2] [/S]]] [ドライブ:]ファイルパス [パラメータ]
DEVICEHIGH=/L:2,9680 C:\DOS\ANSI.SYS /X
DOS
対象 MS-DOS Ver.5.0以降
機能 DOSがUMBメモリへのリンクを維持、またはHMAメモリにDOSのシステムの一部をロード
書式 DOS=HIGH|LOW[,UMB|NOUMB]
DOS=HIGH,UMB
補足 DOSをHMAに配置するかどうか、またUMBを使用するかどうかを指定する。
DOSDATA
対象 PC DOS Ver.7.0以降
機能 システムテーブルをUMBメモリにロード
書式 DOSDATA=UMB|NOUMB
DOSDATA=UMB
補足 システムテーブルとはFILES、FCBS、BUFFERS、LASTDRIVE、STACKSのバッファのこと。
DRIVPARM
対象 MS-DOS Ver.3.2以降
機能 既存のブロックデバイスに対するシステムの特性リストを変更
書式 DRIVPARM=/D:ドライブ番号 [/C] [/F:ファクタ] [/H:ヘッド数] [/I] [/N] [/S:セクタ数] [/T:トラック数]
DRIVPARM=/D:0 /C /H:2 /S:9 /T:80
補足 パラメータの書式はDRIVER.SYSと同じなので詳細はそちらの情報を参照。
ただしDRIVER.SYSとは異なり、新たな論理ドライブを作成しない。またPC DOSではサポートしていない。
FCBS
対象 MS-DOS Ver.3.1以降
機能 FCB(File Control Block)によって同時にオープンできるファイルの最大数を指定
書式1 FCBS=x
書式2 FCBS=x,y
x 一度にオープンするFCBの数を1から255の範囲で指定。
y 最初にオープンしたy個のファイルのクローズを禁止。0から255の範囲で指定。(NEC PC98用MS-DOSのみ。)
FCBS=4,0
補足 FCBは初期のバージョンのDOSで提供されていたファイルへのアクセス手段。
MS-DOS Ver.2.0でファイルハンドラに置き換えられたが、互換性確保のためFCBも使えるようになっている。
FCBは階層構造(ディレクトリ)を扱えない問題があり、ほとんどのプログラムはFCBを使わない。
FILES
対象 MS-DOS Ver.2.0以降
機能 ファイルハンドルによって同時にオープンできるファイルの最大数を指定
書式 FILES=x
x 一度にオープンするファイルの数を8から255の範囲で指定。(ただしVer.2.xのみ5から255の範囲。)
FILES=30
INSTALL
対象 MS-DOS Ver.4.0以降
機能 メモリ常駐プログラムをロードする
書式 INSTALL=[ドライブ:]ファイルパス [パラメータ]
INSTALL=C:\DOS\FASTOPEN.EXE
LASTDRIVE
対象 MS-DOS Ver.3.0以降
機能 アクセス可能なドライブの最大数を指定
書式 LASTDRIVE=x
LASTDRIVE=Z
補足 DOSは各ドライブ用にデータ構造をメモリ中に割り当てるため、必要な数だけのドライブを指定したほうがよい。
NUMLOCK
対象 MS-DOS Ver.6.0以降
機能 始動時のNUMLOCKの状態
書式 NUMLOCK=ON|OFF
REM
対象 MS-DOS Ver.5.0以降
機能 その行がコメントであることを示す
書式 REM コメント
補足 バッチファイルのREMコマンドと同じ。
SHELL
対象 MS-DOS Ver.2.0以降
機能 実行するコマンドインタープリタの名前と場所を指定
書式 SHELL=[ドライブ:]ファイルパス [パラメータ]
SHELL=C:\COMMAND.COM /P
補足 通常はCOMMAND.COMを指定するが、代替となる他のシェルを指定することもできる。
代表的なシェルに4DOS(Norton UtilitiesでNDOSとして付属した。)がある。
ただ日本国内ではCOMMAND.COMを置換するのではなく拡張を施す方式のシェルが一般的だった。
STACKS
対象 MS-DOS Ver.3.2以降
機能 システム割り込みハンドラのデータスタックの動的使用をサポート
書式 STACKS=n,s
n スタックの数を0または8から64の範囲で指定。
m 各スタックのサイズの数を0または32から512の範囲で指定。
STACKS=8,512
補足 多くのプログラムは各自でスタックを確保するため、通常は0に設定しても問題ない。
SWITCHES
対象 MS-DOS Ver.6.0以降
機能 特別なオプションを指定
書式 SWITCHES=[/W] [/K] [/N] [/F]
/W WINA20.386がルートディレクトリ以外のディレクトリにある。
/K 拡張キーボード機能を無効にする。
/N 始動コマンドをバイパスする[F5]キーや[F8]キーを使用できないようにする。
/F 始動時の「Starting MS-DOS...」のメッセージの後の遅延をスキップする。
;
対象 MS-DOS Ver.6.0以降
機能 その行がコメントであることを示す
書式 ;[コメント]
?
対象 MS-DOS Ver.6.0以降
機能 その行のコマンドを実行する前に確認メッセージを表示
書式 [コマンド]?=
DEVICEHIGH?=C:\DOS\ANSI.SYS /X

MS-DOS Ver.6.0以降では1つのCONFIG.SYSで複数のシステム環境設定(システム構成)を扱うための仕組みが追加された。(NEC PC98用MS-DOS Ver.6.2を除く。)この仕組みはWindows 9x/Meの起動ディスクで利用されている。

[MENU]
対象 MS-DOS Ver.6.0以降
機能 始動メニューで表示される項目を定義
書式 [MENU]
補足 最初のメニューのブロック名はMENU固定だが、サブメニューはCOMMONとMENU以外なら何でもよい。
INCLUDE
対象 MS-DOS Ver.6.0以降
機能 別の構成ブロック内のコマンドを実行
書式 INCLUDE=ブロック名
MENUDEFAULT=BLOCK_A
MENUCOLOR
対象 MS-DOS Ver.6.0以降
機能 メニューのテキストの文字色と背景色を指定
書式 MENUCOLOR=x[,y]
x テキストの文字色を0から7の範囲で指定。
y 画面の背景色を0から7の範囲で指定。
MENUCOLOR=7,0
MENUDEFAULT
対象 MS-DOS Ver.6.0以降
機能 メニュー省略時のメニュー項目やタイムアウト値を指定
書式 MENUDEFAULT=ブロック名[,タイムアウト]
MENUDEFAULT=BLOCK_A,10
MENUITEM
対象 MS-DOS Ver.6.0以降
機能 メニュー項目を定義
書式 MENUITEM=ブロック名[,メニューテキスト]
ブロック名 対応する構成ブロックの名前を半角70文字以内で指定。
メニューテキスト 表示するテキストを半角70文字以内で指定。
MENUDEFAULT=BLOCK_A,Menu A
補足 メニューテキストに日本語(DBCS文字)を入れると文字化けして正しく表示されない。
ただしNEC PC98などハードウェアで日本語表示をサポートしている場合は正しく表示される。
SUBMENU
対象 MS-DOS Ver.6.0以降
機能 別の一組の選択項目を表示するメニュー項目を定義
書式 SUBMENU=ブロック名[,メニューテキスト]
SUBMENU=BLOCK_AA,Sub menu A
補足 ブロック名には日本語を指定可能だが半角英数字を使ったほうがよい。

○CONFIG.SYSの一例

[MENU]
MENUITEM=CD,Start computer with CD-ROM support.
SUBMENU=NOCDMENU,Start computer without CD-ROM support.
MENUDEFAULT=CD,10
MENUCOLOR=7,0

[NOCDMENU]
MENUITEM=NOCD,Use extended memory area.
MENUITEM=NOCDCACHE,Use extended memory area and disk cache.
MENUITEM=NOCDNOXMA,Only use conventional memory.
MENUDEFAULT=NOCD
MENUCOLOR=7,0

[COMMON]
BUFFERS=15,0
FCBS=4,0
FILES=30
LASTDRIVE=Z
DEVICE=C:\DOS\BILING.SYS
DEVICE=C:\DOS\JFONT.SYS /P=C:\DOS\
DEVICE=C:\DOS\JDISP.SYS
DEVICE=C:\DOS\JKEYB.SYS /106 C:\DOS\JKEYBRD.SYS

[NOCDNOXMA]
DEVICE=C:\DOS\SETVER.EXE
DEVICE=C:\DOS\ANSI.SYS

[NOCD]
DEVICE=C:\DOS\HIMEM.SYS
DEVICE=C:\DOS\EMM386.EXE 1024 RAM
DEVICEHIGH=C:\DOS\SETVER.EXE
DEVICEHIGH=C:\DOS\ANSI.SYS
DOS=HIGH,UMB

[NOCDCACHE]
INCLUDE=NOCD
INSTALL=C:\DOS\FASTOPEN.EXE C: /X

[CD]
INCLUDE=NOCDCACHE
DEVICEHIGH=C:\DRIVERS\OAKCDROM.SYS /D:MSCD001 /L:

○やや特別な意味を持つ環境変数

次の環境変数は特定の場面で特別な意味を持つので、扱いに注意を要する。

COMSPEC
設定タイミング DOS起動時に自動で設定
設定対象 DOSのシステム(COMMAND.COM)
意味 COMMAND.COMのファイルパス
COMSPEC=C:\COMMAND.COM
補足 COMMAND.COMの非常駐部が破壊された時の再ロードに使う。
再ロード時にCOMMAND.COMが見つからない場合はそのファイルパスを入力するよう要求される。
CONFIG
設定タイミング 始動メニュー選択時
設定対象 なし(通常はAUTOEXEC.BATの処理の分岐に使う)
意味 始動メニューで選択された項目(構成)のブロック名
CONFIG=MENUITEM_A
補足 AUTOEXEC.BAT内の処理の分岐に使うことを想定して用意されている。
COPYCMD
設定タイミング なし(ユーザーが任意で設定)
設定対象 COPYコマンド(COMMAND.COM)、MOVE、XCOPYコマンド
意味 COPY、MOVE、XCOPYコマンド実行時の既定のパラメータ
COPYCMD=/Y
補足 /Yスイッチ以外は無効。
DIRCMD
設定タイミング なし(ユーザーが任意で設定)
設定対象 DIRコマンド(COMMAND.COM)
意味 DIRコマンド実行時の既定のパラメータ
DIRCMD=/P /W
NO_SEP
設定タイミング なし(ユーザーが任意で設定)
設定対象 DIRコマンド(COMMAND.COM)、CHKDSK、FORMAT、MEMコマンド
意味 特定のコマンドで数値に区切り文字(カンマ)を付けなくする
NO_SEP=ON
TEMP
設定タイミング なし(通常は起動時にAUTOEXEC.BATで設定)
設定対象 一部のDOSコマンドやプログラム
意味 一時ファイルの保存先ディレクトリパス。
TEMP=C:\
補足 通常、一時ファイルはプログラム終了時に削除されるが、正常に終了しなかった場合はそのまま残ることがある。
保存先によっては他のファイルと区別が付かなくなるので、一時ファイル専用のディレクトリを作っておいたほうがよい。
TMP
設定タイミング なし(通常は起動時にAUTOEXEC.BATで設定)
設定対象 一部のプログラム
意味 TEMPと同じ。
補足 TEMPとTMPのどちらの環境変数を使うかはプログラムによるが、DOSではTEMPを標準としている。
PATH
設定タイミング なし(通常は起動時にAUTOEXEC.BATで設定)
設定対象 DOSのシステム(COMMAND.COM)
意味 現行ディレクトリで検出できなかったコマンドやバッチファイルなどの実行可能ファイルを指定したディレクトリで検索。
PATH=C:\DOS;C:\
補足 セミコロンで区切ることで複数のディレクトリを指定できる。PATHコマンドでも設定可能。
PROMPT
設定タイミング なし(通常は起動時にAUTOEXEC.BATで設定)
設定対象 DOSのシステム(COMMAND.COM)
意味 コマンドプロンプト文字列。
PROMPT=$N$G
補足 PROMPTコマンドでも設定可能。

※MS-DOSとPC DOS(IBM DOS)の用語の違い

これらはそれぞれ呼び方は異なるが意味は同じ。

英語 日本語(MS-DOS) 日本語(PC DOS)
Configuration block 環境設定ブロック 構成ブロック
Conventional memory コンベンショナルメモリ 基本メモリー
High memory ハイメモリ HMAメモリー
Install インストール 導入
Start the computer コンピュータを起動 システムを始動
Startup menu スタートアップメニュー 始動メニュー
Upper memory 上位メモリ UMBメモリー

※コメント欄が表示されない場合はdisqusについてJavascriptが有効であることを確認して下さい。コメントはスパム防止フィルターによる承認制のため、投稿してもすぐに反映されない場合があります。

管理人 : Akamaki (akm)

は、PCとVTuberに夢中になっている電気技術者です。

私はレトロコンピューティングの愛好家ですが、そのようなリグはもう収集していません。

私の活動はトップページで見ることができます。読んでくれてありがとう!