ディレクトリリスト取得プログラム:dirlist.exe
はじめに
仕事柄、大量のファイルで構成されたプロジェクトを扱うことが多いのですが、パッチやサービスパックを当てた時に、いきなりビルドが失敗するようになることがよく有ります。以前の環境をバックアップしておいて、前回からの差分を見て、パッチの修正内容を調べ、プロジェクトへの影響範囲を調べたりするのですが、マイクロソフト謹製のツール類はファイル数も多く、以前の内容をそのままバックアップするのも大変です。
以前の状態との差分を調べるだけなら、ディレクトリのファイルリストをサブディレクトリも含めて再帰的に取得しておき、ファイル名、ファイルサイズ、タイムスタンプをDIFFツールで比較するだけでも十分です。しかし、DIRコマンドで
/S オプションを使ってもファイルのフルパス名が表示できなかったり、
/B オプションを使うとファイルサイズやタイムスタンプが表示できないなど、あまり使い勝手が良くありません。そこで、コマンドラインのDIRコマンドに似たユーティリティを作成しました。DIRLIST.EXE
というプログラムです。
DIRLIST.EXE の機能
DIRLIST.EXE は、DIR コマンドに似た、ファイルリストを出力するコマンドラインプログラムです。DIR
コマンドとの違いは、
- テキストファイルにリダイレクトして使うことが前提。
- 1行に1ファイルの情報を出力。
- ファイルやディレクトリごとのファイル数・ファイルサイズの総計などは表示しない。
- ファイル名は常にパス名+ファイル名で表示する。
- ファイルのMD5ハッシュ値を計算して表示できる。
- サブディレクトリを再帰的に探索可能。
- タイムスタンプ、ファイルサイズ、ファイル属性、MD5ハッシュ値の任意のものを表示可能。
といったところです。
MD5とは、ハッシュ生成アルゴリズムの名前で、このアルゴリズムは任意の長さのデータに128ビットのハッシュ値を生成します。データが1バイトでも違っていたらMD5ハッシュ値は全く異なる値になるので、ファイルが全く同一か否かを判定するのに利用できます。
使用方法
PATH の通ったディレクトリに、DIRLIST.EXE
をコピーしてください。Borland C++ をインストールしている人は、C:\borland\bcc55\bin
などに入れておくと良いでしょう。
書式は、以下のとおり。
DIRLIST [/option] PATH名
option は以下のものが指定できます。
- /t : タイムスタンプを表示する
- /s : ファイルサイズを表示する
- /a : ファイル属性を表示する
- /m : MD5を表示する
- /r : サブディレクトリも検索する
- /h : help表示
PATH名は、ディレクトリ名か、ディレクトリ名\ファイル名 を指定します。ディレクトリ名は絶対パス、相対パスのいづれもOKです。ファイル名を指定する場合は、ワイルドカードを含むことが出来ます。ディレクトリ名を省略すると、カレントディレクトリからの検索になります。
実行例
/tsamr で全てのオプションを付けると、タイムスタンプ、ファイルサイズ、属性、MD5、フルパス名 の順に表示されます。あとはリダイレクトして保存するなり、sort.exe
に食わせるなり、好きにしてください。
ダウンロード
たいしたプログラムでは有りませんが、何かの役に立つかもしれませんので、ソースごと公開します。自由に使ってください。なお、MD5アルゴリズムは、RSA
Data Security, Inc.が公開しているものをそのまま持ってきました。
ソースコード&実行ファイル