再帰下降型DIRコマンド

概要

 指定したディレクトリ、及びそのサブディレクトリのファイルのリストを表示していくプログラムです。 また、データをCSV形式で保存するオプションもありますので、ファイル一覧を表計算ソフトやデータベースなどで作るのに役立ちます。 完全ではありませんが、LHAで圧縮されたファイルのリストや画像ファイル(.bmp .dib .gif .pic[x68k] .pi .pcx .mag .jpg)のサイズや色数なども取得することが出来ます。

 私個人としてはCD-ROMのファイル管理のために作成したのですが、Windows95用のCD-ROMでロングファイルネームを使ったものが出始めてから使わなくなりました(というか、対応できなくなった)。


使い方

起動方法

 rdir.exeを起動するにはMS-DOS(またはWindows上のDOS窓)でプロンプトが出ている状態でrdirと入力します。 起動オプションを付けることで動作を変更できます。

 rdir [-d/-t/-w/-l/-e/-g/-lg/-cfn/-ecfn/-nfn/-enfn] [Directory] [-]

[Directory]

 表示したいディレクトリ名を表示します。 ドライブが違う場合は、ドライブ名、パス名を指定します。 この指定がない場合はカレントディレクトリの内容を表示します。

[-]

 Windows95などのロングファイル名が使用できる環境で、ロングファイルネーム情報が不要な場合(以前のバージョンと同じ出力にしたい場合)に使用します。

起動オプション

 この説明中、ディレクトリ内ファイル容量とはそのディレクトリの中にあるファイルの容量を合計したものです。 ディレクトリ内総容量とはディレクトリ内ファイル容量にサブディレクトリ内のファイル容量を全て加えたものです。 つまりそのディレクトリ以下がどれくらいの容量を占めているかを示しています。

無指定時

 ディレクトリ名、ファイル名、ファイル容量、ファイル作成日、ファイル作成時間、ファイル属性、ディレクトリ内ファイル容量、ディレクトリ内総容量を表示します。

-d指定時

 ディレクトリ名、ディレクトリ内ファイル容量、ディレクトリ内総容量のみ表示します。 ファイル関係の表示は行いません。

-w指定時

 ディレクトリ名、ファイル名のワイド表示、ディレクトリ内ファイル容量、ディレクトリ内総容量を表示します。 ファイル名はワイド表示になりますので、ロングファイル名は表示しません。

-l指定時

 無指定時の内容に加え、LHAによる圧縮ファイルの場合は圧縮ファイル内のファイル名、圧縮時容量、復元時容量、圧縮形式、CRCコード、復元時のディレクトリ、復元時総容量を表示します。 LHA圧縮ファイルの判断は拡張子がLZHまたはLHAかどうかで行っています。

 ここでの圧縮ファイル内に関する表示はLHAでの一覧に準じています。表示内容の詳しい説明が知りたい場合はLHAのマニュアルを参照していただけるようお願いします。

-e指定時

 拡張子がLZHの時のみLHA圧縮内容の表示を行います。 拡張子がLHAのものはMS-DOS以外で圧縮されたものに付けられるようなので、それを除外するためのオプションです。 この拡張子がLHAのものは内容が正確に復元できない(長いファイル名やMS-DOSで使用不可能文字仕様のファイル名、複数の拡張子:filename.ext1.ext2など)情報が含まれている可能性があるので、それを含めたくない場合に指定してください。

-g指定時

 無指定時+画像ファイル時には画像サイズ(横*縦)、使用色数を表示します。 使用色数は実際にその絵で使用している色数でなく、保存時にフォーマットとして使っている色数です。 そのため実際にその画像で使用している色数はそれ以下の場合があります。

 画像ファイルは拡張子で判断しています。 サポートしている画像の拡張子は.bmp .pic[X68K] .pi .pcx .dib .mag .jpgです。 これと同じ拡張子でも違うフォーマットの場合(たとえばMACのPICTなど)は表示できません。

-lg指定時

 上記の-l-gの両方の表示を行います。

 これ以降はデータベース関連出力になります。 この指定の中でfnというのはパス名を含む実際のファイル名ですが、拡張子はプログラム側で付けますので、拡張子の指定はしないでください。 各出力ファイルはCSV形式で保存されます。

-cfn指定時

 データベースに登録できるファイル出力を行います。 出力は-lgでテキスト出力と同じ内容をCSV形式にしたものです。 出力するファイルは、 .csvはファイルリスト、 .acvはLHA圧縮ファイル内のファイルリスト、 .grpは画像サイズ、色情報です。 データがない場合はそのファイルを削除します。

-ecfn指定時

 -cfnと同じ形式ですが、LHA圧縮ファイルは拡張子がLZHの時のみ処理します。

-nfn指定時

 -cfnと同じ形式ですが、LHA圧縮ファイルに日付、時間データを加えたデータを出力します。 初期のバージョンのrdirは日付、時間は出力されませんでした。 それと互換性を取るために、-cfnは変更しないで新しいオプションを作成しました。

 このオプションで出力をした時LHA圧縮ファイル内のファイルの日付、時間データが0になる場合があります。 これは通常使われている形式と違う方式の日付、時間の保存方法をしているものです。 作者はこの部分は対応できませんでした。

-enfn指定時

 -nfnの内容で、拡張子がLZHの時のみ処理を行います。 こちらも初期バージョンのrdirとの互換性を考え-ecfnは変更しないで新しいオプションにしました。 こちらも日付、時間が0になる場合があるのも-nfnと同様です。


出力内容説明

 実際にプログラムで出力したデータの一部を読み込んで説明します。 ただし、ブラウザ上ではフォントが等幅でない場合があります。 その場合は、テキストエディタなど等幅フォント環境で見ていただきたいと思います。

MS-DOSでの出力

[\]
ACCESSP.TXT        7,164 1994-04-21 03:29:52 ---a
ISBNLIST.TXT       3,035 1994-10-21 22:10:08 ---a
- \ 10,199 byte -

[\GRAPH]
AUMI1.PI          70,528 1994-07-20 01:14:04 ---a   640x 400    16color
AOI1.BMP          32,062 1994-09-16 16:52:40 ---a   640x 400     2color
AMAGI03.PIC       13,083 1990-09-25 19:54:36 ---a   512x 512   32Kcolor
R_SMS008.GIF      18,088 1995-03-07 23:48:38 ---a   640x 400    16color
NEKO1.DIB         32,062 1995-03-07 23:49:42 ---a   640x 400     2color
YUKARI1.PCX       13,339 1995-03-07 23:50:22 ---a   640x 400     2color
- \GRAPH 179,162 byte -

[\LZH]
PRTF11.LZH        18,501 1991-04-10 22:01:02 r--a
    README.DOC           485         686 1991-04-10 19:05:18 -lh1- 11CF
    COPYRIGH.T           690         999 1991-04-10 19:07:04 -lh1- D9B3
    PRTFILE.COM        2,382       3,868 1991-04-10 18:54:46 -lh1- 9D0E BIN\
    PRTFILE.DOC        1,119       2,208 1991-04-10 22:01:02 -lh1- 6EF9 DOC\
    PRTFILE.ASM       13,639      46,953 1991-04-10 18:52:44 -lh1- 71A9 SRC\
    <PRTF11.LZH  > unarchive      54,714 byte
PASCAL_P.LHA     219,910 1993-08-15 00:11:16 r--a
    facts_38.ps        9,366      28,418 1993-07-28 09:01:22 -lh5- 416C
    frontdoc.ps      210,472     704,708 1993-08-14 18:19:24 -lh5- DB65
    <PASCAL_P.LHA> unarchive     733,126 byte
- \LZH 238,411 byte -
+ \ 427,772 byte +

 それでは出力の詳細説明をします。出力から抜き出した部分はこのような表示になっています。

[\GRAPH]

 これから出力を行うディレクトリ名です。 該当ドライブのルートディレクトリからのフルディレクトリを表記しています。

AUMI1.PI

 ファイル名です。 短いファイル名と長いファイル名がある場合は短いファイル名です。

70,528

 ファイル容量です。3桁毎にカンマが入っていますから、読みやすいと思います。

1994-07-20

 ファイル作成日(西暦-月-日)です。

01:14:04

 ファイル作成時間(時:分:秒)です。

---a

 ファイル属性です。 属性がある場合はその属性名、属性がない場合は-が入れられます。
r : read only / h : hidden / s : system file / a : archive)

640x 400

 画像サイズ(横*縦)です。

16color

 画像色数です。これは実際の使用色数でなく、画像保存形式での色数です。 2色しか使っていなくても256色形式で保存すると256colorと表示されます。 また、JPEG画像(JFIF画像)の場合は必ず16Mcolorと表示します。

PRTF11.LZH

 LHA圧縮ファイル名です。

PRTFILE.COM

 (LHA圧縮ファイルに含まれているファイルの)ファイル名です。

2,382

 圧縮ファイル内で占めているサイズ(ヘッダ部分除く)です。

3,868

 展開時のファイル容量です。

1991-04-10

 圧縮されているファイルのタイムスタンプ(年-月-日)です。

18:54:46

 圧縮されているファイルのタイムスタンプ(時:分:秒)です。

-lh1-

 圧縮タイプです。

9D0E

 CRCコード(16進数)です。

BIN¥

 復元ディレクトリです。 圧縮ファイルが展開されるとき、このディレクトリが作成されその中にファイルが入れられます。

<PRTF11.LZH > unarchive 54,714 byte

 (PRTF11.LZHに含まれるファイルを)すべて復元した場合の総容量です。

- \ 10,199 byte -

 ディレクトリ内に含まれているファイルの容量の合計です(サブディレクトリは含みません)。

+ \ 427,772 byte +

 ディレクトリ内に含まれるファイルの容量と、そのディレクトリ以下のディレクトリに含まれているファイルの全容量の合計です。 そのディレクトリが実際どれだけの容量を占めているかが分かります。

Windows95での出力

 Windows95での出力はMS-DOSでの出力に準じます。 ただしロングファイルネームに関する出力が加わります。

  [\TEMP\SAMPLE~1] \TEMP\sample directory
  ふわふ~1.BMP     361,078 1995-09-08 09:02:22 ---a   600x 600   256color  ふわふわエレン.bmp
  COMMUN~1.LZH       1,748 1996-02-18 04:12:42 ---a  Communication Data.lzh
      MAILADR.TXT          853       1,545 1995-09-07 17:27:46 -lh5- A974
      PROFILE.MPP          818       1,326 1996-01-03 04:22:08 -lh5- 1580
      <COMMUN~1.LZH> unarchive       2,871 byte
  - \TEMP\SAMPLE~1 362,826 byte -
  + \TEMP 362,826 byte +

 ロングファイルネームに関する部分だけ説明します。 それ以外はMS-DOSでの出力と同じです。

[¥TEMP¥SAMPLE~1]

 短いディレクトリ名です。

¥TEMP¥sample directory

 長いディレクトリ名です。 小文字や特殊文字、スペースなどが含まれている場合があります。 長いディレクトリ名がない場合はこれは出力されません。

ふわふ~1.BMP

 短いファイル名です。

ふわふわエレン.bmp

 長いファイル名です。 小文字や特殊文字、スペースが含まれている場合があります。 長い名前がない場合はこれは出力されません。

COMMUN~1.LZH

 短いファイル名です。

Communication Data.lzh

 長いファイル名です。

 ワイド表示(-w指定時)ではロングファイルネームのファイル名は表示しません(ディレクトリ名はロングファイルネームがある場合は表示します)。

 Windows95のDOS窓でディレクトリ移動(CDディレクトリ名)をする場合は長いディレクトリ名で移動するようにしてください。 短いディレクトリ名で移動した場合は長いディレクトリ名が正常に表示されません。 ディレクトリ名を入力するのが面倒くさい場合はCDと入力した後にスペースを入れて、エクスプローラーからディレクトリ名をDOS窓にドロップすることで長いディレクトリ名を入力することが出来ます。 (入力後にリターンキーを入れると移動します)

CSV形式での出力

 起動オプションの-cfn, -ecfn, -enfn(fnはファイル名)を指定したときの出力は、全て出力ファイル(fn.csv, fn.acv, fn.grp)として出力されます。 この出力ファイルはCSV形式のテキストファイルとなっています。 そのため、CSV形式が読み込めるデータベースでファイルを管理することが出来るようになっています。 もちろん表計算ソフトでCSV形式が読める場合はそちらで見ることもできますし、エディタ等のテキストファイルを開くことが出来るソフトでも見ることが出来ます。

 なお、出力内容の説明、データベースで使用するときの方法等は、ソフト同梱のdatabase.txtファイルを参照してください。

 CSVファイルを開くときにオプション設定が必要な場合があります。そのときは以下のように設定してください。 オプション設定がない場合はそのまま読み込んでください。 多くのソフトでこの形式はサポートされていると思います。 拡張子が.csvになっていないと読み込めないソフトの場合は、.acv .grpの拡張子を.csvに変更して読み込ませてください。

 以上の設定で正しく読み込めるはずです。 なお、用語が違ってどう設定すればいいか分からない場合は、コンピュータに詳しい人に聞くか、作者宛にどの項目を選択すればいいのかというメールを送っていただければ、分かる範囲で答えたいと思います。


参考文献

  1. lha211_s.lzh(LHA のソースコードファイル)
  2. DR.Reference(米国Accurate Research, Inc.製のCD-ROM)のGIF.PAS(Turbo Pascal用のGIF形式ファイルに関するユニットファイル)。
  3. Charles Petzold著「プログラミングWINDOWS Version 3」アスキー出版局(ISBN4-7561-0081-3)
  4. DIBファイル(.bmpファイル)のファイルヘッダ(バイナリエディタにて解析)
  5. pic_fmt2.lzh「PICのフォーマットについて」の解説文書ファイル
  6. pitech.lzh「Pi 16色グラフィック・ローダ/セーバ解説版(2nd Edition)」の解説文書ファイル
  7. DR. Reference(CD-ROM)のvesa24_2.zipの中のPCX形式画像ファイルのヘッダ構造体
  8. 平林雅英著「C言語による最新プログラム事典[第4巻]」技術評論社(ISBN4-7741-0169-9)
  9. Delphi for Windows 1.0J(Borland)のヘルプファイル
  10. まぐろBBS著「まぐろのすべて」ソフトバンク株式会社(ISBN4-89052-799-0)
  11. David C. Kay & John R. Levine著「グラフィックファイルフォーマット・ハンドブック」アスキー出版局(ISBN4-7561-1456-3)

 上記lha211_s.lzh, pitech.lzhはVector Design社(現Vector社)のFREE SOFT & SHAREWARE PACK 5000 FOR MS-DOS/WINDOWS 1995年前期版のCD-ROMから入手しました。


copyright (c) 1998 and