環境変数TMP等 RAMドライブ自動設定(てんぷら)
===============================================================================
【 環境変数TMP等 RAMドライブ自動設定ツール 】
《 TMPRAM 〜 てんぷら Version 1.7 》
<< Copyright(c) 1994〜1996 S.Yamahata 山端 茂之 >>
===============================================================================
◎ 機能概要
===========
1.TMPRAM(てんぷら)とは・・・
外付けのハードディスクなどを使用している場合,立ち上げ時の周辺機器
の電源のON/OFFに伴い,ドライブ構成が変わってしまいます。
AUTOEXEC.BATでRAMドライブに対するパスを,TMP等の
環境変数に設定している場合などにおいて,このように起動毎にドライブ
構成が変わってしまうと,パスが環境変数に正しく設定することができず
何かと不便です。
TMPRAMとは,このような場合において,RAMドライブを自動的に
検索し環境変数を設定する為のツールです。
(ちなみに "てんぷら" という呼び名は,当ツールを開発中に便宜上
自分で呼んでいただけであり,響きが似ているという事以外は特に
深い意味はありませんので・・・ あしからず (^^;))
2.原理について
原理は非常に単純で,RAMドライブに付けられたボリュームラベル名を
検索することによりドライブを判別し,環境変数を設定します。
言い換えれば,RAMドライブでなくても,ボリュームラベル名さえ指定
されていれば,どのようなドライブでも自動的に判別できます。
RAMドライブの判別方法は他にもいろいろあるようですが,ボリューム
ラベル名で検索する方法が確実で良いような気がしたもので・・・。
(プログラミングの知識が乏しいことも理由のひとつですが・・・(^^;))
◎ 使用方法
===========
1.実行
TMPRAM.COM をパスの通ったディレクトリに置き,AUTOEXEC.BAT より
以下のように実行して下さい。
(もちろん,コマンドラインからでも実行可能ですが・・・)
TMPRAM
このようにデフォルトで実行した場合の結果は次のようになります。
(1) ボリュームラベル => MS-RAMDRIVE
ボリュームラベル名が MS-RAMDRIVE であるドライブを検索し,一致した
ドライブをRAMドライブと認識します。
(2) 環境変数名 => TMP
環境変数 TMP を設定します。
(3) ディレクトリ名 => ルートディレクトリ
検索したRAMドライブのルートディレクトリに対するパスを環境変数に設定
します。
上記以外の設定で環境変数の設定を行いたい場合には,次に示すように
パラメータを指定して下さい。
2.パラメータの指定
TMPRAMの実行時のパラメータは次の3つです。
(1) /E=環境変数 (MAX=12桁)
~~~~~~~~
設定したい環境変数を指定します。
(2) /L=ボリュームラベル名[*] (MAX=11桁)
~~~~~~~~~~~~~~~
RAMドライブのボリュームラベル名を指定します。
ボリュームラベル名の前方一致で検索を行いたい場合には,ワイルドカード
'*' を指定します。
(3) /D=ディレクトリ (MAX=64桁)
~~~~~~~
RAMドライブにディレクトリを作成してそこに対するパスを環境変数に
設定したい場合指定します。
ディレクトリが既に存在する場合はディレクトリの作成は行わずにパスの
設定のみ行います。
パラメータを指定した場合の使用例は次のようになります。
例1) TMPRAM /E=TEMP /L=VDISK /D=TMP
ボリュームラベル名が "VDISK" であるドライブに,
ディレクトリ "TMP" を作成し,
そこへのパスを環境変数 "TEMP" に設定
例2) TMPRAM /L=RAMDISK*
ボリュームラベル名の先頭7文字が "RAMDISK・・・" であるドライブの,
ルートディレクトリへのパスを環境変数 "TMP" に設定
3.デフォルト値の更新
TMPRAMのデフォルト値を直接更新することができます。
これにより,実行時にパラメータを指定する必要がなくなります。
デフォルト値の更新を行う場合は,次のようにコマンドラインから
入力してTMPRAMを実行して下さい。
TMPRAM /U [[/L=・・・] [/E=・・・] [/D=・・・]]
要するに,今まで指定していたパラメータの1件目に /U を追加指定する
だけです。
この指定により,次のように処理されます。
(1) "/U" のみ指定した場合は,更新前のデフォルト値が表示されます。
(更新処理は行われません)
(2) "/U" 以降にパラメータが指定された場合はデフォルト値の更新処理が
行われ,更新前と更新後のデフォルト値が表示されます。
(3) パラメータの "=" の後ろに何も指定しなければ,デフォルト値はクリア
されます。
但し,"/L=" 及び "/E=" のデフォルト値がクリアされた状態で,尚且つ
パラメータも指定せずに実行した場合には,エラーとなります。
また,"/D=" のデフォルト値がクリアされた状態で実行した場合は,
ルートディレクトリが指定されたものと見なされます。
(4) デフォルト値の更新を行っても,今までどおりパラメータの指定も可能
ですので,実行時に部分的に変更することもできます。
(5) パラメータの1件目以外に "/U" を指定しても無効となります。
(この場合は,デフォルト値の更新ではなくTMPRAMの
実行となってしまいますので,注意してください。)
デフォルト値の更新を行う場合の使用例は次のようになります。
例1) TMPRAM /U
現在のデフォルト値が次のように表示されます
てんぷら デフォルト値更新
<更新前>
・ボリュームラベル = MS-RAMDRIVE
・環境変数名 = TMP
・ディレクトリ名 =
例2) TMPRAM /U /L=VDISK /E= /D=TEMP
デフォルト値が更新され次のように表示されます
てんぷら デフォルト値更新
<更新前>
・ボリュームラベル = MS-RAMDRIVE
・環境変数名 = TMP
・ディレクトリ名 =
<更新前>
・ボリュームラベル = VDISK
・環境変数名 =
・ディレクトリ名 = TEMP
4.ヘルプの表示
コマンドラインから次のように入力することにより,TMPRAMの使用方法
等が表示されます。
TMPRAM /?
この場合,"/?" 以降にパラメータを指定しても無視されます。
5.その他の仕様について
・ RAMドライブの検索は,LASTDRIVEより先頭ドライブに向かって
行います。
・ 検索するボリュームラベル名の指定は,ハードディスクなどの固定ドライブ
に対しても可能です。
・ 検索したRAMドライブの番号をリターンコードで返します。
(Aドライブ → 1,Bドライブ → 2・・・)
・ デフォルト値更新正常終了時及びヘルプ表示のリターンコードは,無条件に
0 を返します。
・ パラメータの指定にミスがあった場合,その旨エラーメッセージは出力
しますが,その部分を無視してデフォルト解釈で処理は続行します。
(但し 指定値が最大桁数を越えた場合においてのみ エラーメッセージ
を出力後リターンコード255を返し処理を中止します)
・ パラメータの指定順は特に問いません。
(但し "/U" 及び "/?" は1件目指定時のみ有効となります)
・ 同一のパラメータが複数指定された場合は,一番最後に指定されたものが
優先されます。
・ 環境変数の為のメモリ不足により環境変数が正常に設定できない場合や,
指定されたボリュームラベル名と一致するドライブが存在しない場合など
パラメータエラー以外のエラーが発生した場合には,エラーメッセージを
出力後リターンコード255を返し,処理を中止します。
・ 子プロセスで実行した場合の処理結果は保証できません。
(環境変数の設定が正常にできない場合があります)
・ ボリュームラベル名のワイルドカードの指定は,'*' の他にMS−DOSの
ファイル名の指定と同様に '?' の使用も可能です。
6.おまけ
通常はRAMドライブを指定するが,何かの原因でRAMドライブが使用
できない場合,代わりにハードディスク等を使用するようにしたい時には,
次のように指定してください。
例) TMPRAM /L=MS-RAMDRIVE
IF ERRORLEVEL 255 TMPRAM /L=HD-DRIVE
ボリュームラベル名が "MS-RAMDRIVE" であるRAMドライブが
存在しない場合は,ボリュームラベル名が "HD-DRIVE" で
あるドライブ(HDD等)に対するパスを環境変数に設定
この場合,"MS-RAMDRIVE" が存在しない旨のエラーメッセージが出力され
ますが,引き続き "HD-DRIVE" に対して正常に処理が続行されます。
但し,環境変数の為のメモリ不足によるエラーの場合には無効ですが・・・。
◎ 更新履歴
===========
1.Ver0.9 → Ver1.0 の変更点
(1) ボリュームラベル名の指定でワイルドカードが使用できるように修正。
(2) PC−98シリーズ以外でも動作可能なことが確認できた為,動作環境
をMS−DOS汎用とした。
2.Ver1.0 → Ver1.1 の変更点
(1) デフォルト値の更新ができるように修正。
(2) リターンコードで返す検索したドライブの番号の変更。
(3) 同一パラメータ複数指定時の優先順位変更。
(4) パラメータのアルファベットの大文字/小文字の区別をなくした。
(5) その他 バグ等の修正。
3.Ver1.1 → Ver1.2 の変更点
(1) ヘルプの表示を追加。
(2) その他 細かな仕様の変更。
4.Ver1.2 → Ver1.5 の変更点
(1) ボリュームラベル名にアルファベットの小文字を含んでいる場合,
ドライブを正常に検出できない不具合を修正。
(2) 指定されたボリュームラベル名と一致するドライブが存在しない
場合には,エラーメッセージを出力後,リターンコード255で
処理を中止するように仕様を変更。
(3) パラメータ指定値の最大桁数のチェックを追加。
(4) デフォルト値の更新を行なった時 TMPRAM.COM のファイル日付が
更新されないようにした。
5.Ver1.5 → Ver1.6 の変更点
(1) 機種により空のFDDアクセス時に出力される警告メッセージを
回避する為,交換可能な記憶媒体(FDD,MO等)を検索対象ドライブ
から除外した。
(2) ボリュームラベルの指定されていないドライブを検出した場合に,
エラーとして処理を終了してしまうバグを修正。
(3) その他,前バージョン修正時に残った無駄なロジックの削除。
6.Ver1.6 → Ver1.7 の変更点
(1) 機種により指定RAMドライブが検出できない不具合を修正。
(2) FDD互換のRAMドライブも指定可能にする為に,交換可能な
記憶媒体(FDD,MO等)を再び検索対象ドライブに戻した。
(3) 上記(2)の仕様変更に伴い,無効のFDDアクセス時に出力される
警告メッセージの回避方法を変更した。
(4) 前バージョン修正時にボリュームラベル名のワイルドカード指定が
無効になってしまったバグを修正。
(5) ボリュームラベル名の '?' のワイルドカードを正式サポート。
◎ 開発資料
===========
1.開発環境
(1) 機種
・ PC−9821 Ne
(2) OS
・ MS−DOS 6.2(PCー9801版)
(3) 開発言語&ツール
・ MASM 6.0 & PWB 2.1(CV 4.0)
2.動作確認
(1) 機種 & OS
・ PC-9821 Ne & MS-DOS 5.0(PC-98版)
MS-DOS 6.2( 〃 )
・ FMR-50 NBX & MS-DOS 6.2(FMR版)
・ FMR-280L & 〃
・ FMV-DESKPOWER H & MS-DOS 6.2/V
Windows 95
・ FMV-DESKPOWER T & 〃
・ ThinkPad 535 & Windows 95
(2) RAMディスクドライバ(またはRAMドライブ)
・ RAMDRIVE.SYS ・ RAMDISK.SYS ・ IOS10.EXE
・ CHARA.EXE ・ RZ.EXE ・ CRD.EXE
・ XMSDISK.EXE ・ PC-9821Ne の RAMドライブ
3.動作環境
TMPRAMは,MS−DOS汎用で動作するツールです。
但し,動作確認は前述の環境以外では行なっていません。
また,PC−98シリーズ以外の機種では,それ程細かいテストは行なっ
ておりませんので,使用環境や機種によっては動作がおかしくなる場合も
考えられます。ご了承下さい。
4.参考資料
・「はじめて読む8086」 アスキー出版局
・「はじめて読むMASM」 アスキー出版局
・「MS−DOS 5.0A
プログラマーズリファレンスマニュアル VOL.1」 NEC
・「Windows MS−DOS C/C++
標準プログラミングテクニック」 アスキー出版局
|