1.はじめに

 名前の通り、重複しているファイルを調べて削除するためのツールです。ファイルの
内容を完全に比較して重複をチェックしていますので、名前や日付が異っていても検出
する事が可能です。検出アルゴリズムに独自の工夫をこらしており、他の類似ツールに
比べて高速に検索することができます

 見つけ出した重複ファイルは、手動でひとつずつ削除することも、まとめてばっさり
削除することもできます。特定のフォルダにあるファイルだけ削除したり、逆にそれ以
外のファイルだけを削除する様な事も可能です

 おまけとして、検索のついでに空のフォルダや不要なバックアップファイルを削除す
る機能もついています




2.マシン環境、対応OS、等

○MS-Windows95以降汎用(のはず。特定のOSに対し何か問題が見つかれば対応します)
 具体的には、95/98, NT4.0/2000で動作することを確認しています
 Me,XPでも動作報告をいただいてますが、NT3.5以前では多分動きません

○ファイル数にプログラム上の制限はありませんが、物理メモリが足りなくなると不安
 定になる可能性があります。10万ファイルにつきおよそ6MBのメモリが必要となります
 またメモリを多目に割り当てる事で検索をより高速に行えるようになりますが、少な
 くてもそれなりに動作します。(推奨 空き物理メモリ 16MB以上)

○ファイルに関するサイズの制限
・4GBを超えるサイズのファイルにも対応しています(最大16TB)
 ただし、半端でなく時間がかかると思いますので完全一致検索はお勧めしません
 [部分一致検索をする]をオンにして、最初の1MB程度だけの比較を行ない、後は
 手動で問題がないか確認する事をお勧めします
・またWindowsではパス名が260文字より長いファイルは扱え無い事になってますが、
 UnDupでは4096文字まで処理(検索・削除)できるようになっています
 (ただしOSに依存する一部の処理に関しては260字を越えるファイルを処理できません)

○使用上の注意
・検索中に他のプログラムによってファイルの内容やサイズが変えられると、
 誤検出したり、エラーが発生してプログラムが停止する事があります
 他のプログラムをすべて終了してから検索する事をお勧めします。
・Windowsのシステム(含むIE)が使用しているファイルについても同様の事が言えます
・また、システムフォルダ内のファイルを不用意に削除した場合、最悪、OSが起動しなく
 なる事も考えられます。
 (Ver.1.5より[システムフォルダは検索対象外]とする設定ができるようになりました
  初級者の方はこの設定を常にオンにされておくようにお薦めします)
・ルートドライブ(C:\など)に対する検索は、色々と問題があるので推奨しません
 (ファイル数が無駄に多い。システムファイルが含まれる、等)
・たとえ重複していても、そのファイルが無いとアプリケーションの動作に支障をきたす
 ようなファイルも時に存在します。削除する際は、対象ファイルを良く吟味してから実行
 するようにしてください
 (削除する前に"検索結果を書出し"ておくと、多くの場合復旧が可能です)
 (現行バージョンの削除ログには復旧のための情報は記録されていません)




3.インストール・アンインストール

配布ファイルをお好きなフォルダに解凍するだけでインストールは完了です。
UnDup.exeを実行すると、本ツールが起動します。
また終了時に設定ファイル(UnDup.cfg)を出力します。

本プログラムではレジストリは使用していません。
アンインストールには、UnDup.exe、UnDup.html等の解凍時に作成されたファイルを削除
してください。またUnDupが作成したUndup.cfg、Delete.logも全て削除して下さい。

CFGファイルは起動時のカレントフォルダ(作業フォルダ)に作成されます。
複数のユーザーでお使いの時はショートカットを作成して個別に作業フォルダを設定すれば、
簡単にマルチユーザーで設定を使い分ける事が可能です。
また、コマンドラインオプションを指定して、CFGファイルを保存するフォルダ、
およびCFGファイル名を変更する事も可能です。
"-H"オプションを指定すれば、CFGファイルはUnDupをインストールしたフォルダに作成します。
(作業フォルダを指定できないランチャーをお使いの方は、必ず指定して下さい)

なお削除ログ(Delete.log)はCFGファイルと同じフォルダに作成されます




4.使い方

基本的な使い方は、フォルダを選んで、検索して、選択して、削除、とシンプルです。
ボタンを押して、動作を選択してください。



4-1.フォルダの選択
(1) 検索フォルダのリストから、検索したいフォルダを選んでチェックして下さい
(2) [フォルダを登録]を押して、新たなフォルダをリストに登録することができます
(3) 登録フォルダはcfgファイルに書き込まれますので、次回起動時も有効です
  (Ver.1.5からはチェックの状態も保存できる様になりました)
(4) リストから削除したい時は、フォルダを選んで[リストから除く]を押して下さい
(5) エクスプローラなどでフォルダを選択し、検索フォルダリストにドラッグドロップ
  する事ができます。(Win95ではできないようです)
(6) コマンドラインからも検索フォルダリストを取り込めます。
  UnDup.exeのショートカットをデスクトップに作成し、そこにエクスプローラなど
  から検索対象に加えたいフォルダをドラッグ&ドロップする事ができます。
(7) 右クリックを押すと開くメニューで、検索対象フォルダの順番を入れ換えることが
  できます(CTRL+↑、↓キーでも操作可能です)
(8) このメニューから、まとめて検索フォルダの選択を操作することもできます。
(9) また、リスト画面の縦サイズを変更することができます (Ver.1.5から)
(10)検索済みフォルダ指定 (Ver.1.5から)
  検索対象フォルダのチェック欄を右クリックすると、グレーのマークが付きます。これは
 『以下のフォルダは重複検査済みとみなし、そのフォルダ内のファイル同士の比較は省略する』
  と言う印です。そのフォルダ内のファイルと、他のフォルダにあるファイルが一致する可能性
  がある時は、きちんと検査します。



4-2.重複ファイルの検索
(1) [検索開始]ボタンを押して下さい
(2) 対象ファイル数が多い(1万件以上)時は検索に時間がかかります。気長にお待ちください
(3) 検索は、基本的に(検索)→(ソート)→(比較)の3パスで行われます
  下部バーに現在の作業内容が表示されます
(4) 作業が終了すると、下部バーの左欄に検索結果の概略が表示されます
(5) [中止]ボタンを押して、検索を途中でやめる事ができます
  ここまでに判明した重複ファイルのリストが表示されます
  (検索オプションによっては、完全に重複していなくても表示される事があります)
(6) [結果保存]ボタンで重複ファイルのリストをファイルに保存できます
  ファイルは通常のテキスト形式で、作成日付とサイズも同時に記録されます
(7) [読込み]ボタンで、保存した重複ファイルリストを読込むことができます
  行頭の文字列をファイル名と解釈しますので、他のツールから容易にリストを
  コンバートできると思います。(区切り記号は改行またはタブ)
(8) [再検索]ボタンを押すと、現在リスト上にあるファイルの重複を調べます
  検索アルゴリズムは[完全一致検索(1pass)]を使用します。
  設定しているアルゴリズムで再検索を行なわせたい時はシフトキーを押しながら
  [再検索]を押して下さい。
  [再検索]は、リストを読込んだ時や、検索条件を絞り込む時に使用して下さい
  なお、簡易検索+再検索よりも、[完全一致検索(2pass)]の方が速いです。
(9) シフトキーと同時に[検索開始]ボタンを押すと、重複ファイルリストを整理します
  ファイルを削除した後に、残っている重複ファイルを確認する時に便利です
  [削除後にリストを整理する]がオンの時は、この操作を行なう必要はありません



4-3.削除するファイルの選択
(1) リスト中の□をマウスで直接クリックしたり、スペースキーを押すことで、
  削除するファイルを手動で選択する事ができます。
  シフトキーと同時にスペースを押すと、選択後に行が自動的に一つ下に移動します。
また、 不要なファイルを効率的に選べるボタンも用意されています。
(2) [自動選択] 
  任意の1ファイルを残して、重複したファイルを全てマークします。
  [オプション設定]で自動選択の基準を変更できます。
(3) [ファイル選択] (Ver.1.5eから[全選択]に代えて採用)
  指定したファイル名・フォルダ名・パス名のファイルを選択します
  指定する文字列にはワイルドカードが使用できます
  必ず1つは残す[自動選択]と違い、一致するファイルは全て選択してしまいます
  "*"を指定すると、以前の[全選択]と同じ動作になります("*.*"ではありません)
  名前と同時に、ファイルサイズで対象ファイルを絞る事も可能です
  なお、単位の所をクリックすると、単位を変更できます
(4) [フォルダ一括選択]
  カーソル行と同じフォルダにあるファイルを全て選択します
  ただし、必ず1つのファイルは残るように調整します
  シフトを押しながらボタンを押すと、フォルダを入力できます
(5) [フォルダ以外を選択]
  カーソル行と同じフォルダにあるファイルと重複している他のファイルを
  全て選択します。ただし、必ず1つのファイルは残るように調整します
  シフトを押しながらボタンを押すと、フォルダを入力できます
(6) [選択解除]
  現在マークされているファイルのマークを全て解除します
  シフトキーを押している時は、ロックも解除します
(7) 検索対象フォルダのリストから適当なフォルダをダブルクリックする事で、
  そのフォルダ以下のファイルを選択することができます。
(8) 右クリックメニューからも選択ができます。基本的な動作はボタンと同じです。
(9) [選択ファイルをロックする]と、選択されているファイルのチェック記号が灰色
  になります。これがロックされている状態を示します。ロックされているファイ
  るは、ロックが解除されるまで選択する事はできず、また削除もされません。
(10) ロックを解除するには、個別にチェックをクリックするか、右クリックメニューから
  [ロックを解除]をするか、シフトを押しながら[選択解除]を押して下さい。
(11)フォルダ名が表示されている領域をダブルクリックすると、[フォルダ比較]ダイアログが開きます
  使い方は、こちらを参照して下さい



4-4.ファイルの内容表示
(1) リスト最上部の灰色の所をクリックする事で、ファイルの表示順を並びかえます
  シフトを押しながらだと、リスト全体の順番も並び替える事ができます
(2) リスト上でファイルを選択し、ダブルクリックするとファイルが実行されます
  データファイルの時は、ファイルが関連づけされているプログラムで起動します
(3) リスト上でファイルを選択し、[E],[V],[B]のキーを押すとそれぞれ、
  登録されたテキストエディタ、画像ビュワー、バイナリエディタが起動します
(4) リスト上でファイルを選択し、[P]のキーを押すとファイルのプロパティを表示します
(5) [閲覧設定]のボタンを押すと起動するプログラムを設定する画面が開きます
  シフトキーを押しながらファイルをダブルクリックしても同じ事ができます
(6) [閲覧設定]画面では、[参照]ボタンを押して実行ファイルを選ぶ事ができます
(7) [▼]ボタンで過去に使ったプログラムを呼び出す事もできます
(8) テキストエディタ、画像ビュワー、バイナリエディタの三種の閲覧プログラムも
  この画面で設定することができます
(9) 選択しているファイルがある時には、[実行]ボタンでプログラムを起動する事が
  できます
(10) [テキストエディタ]、[画像ビュワー]、[バイナリエディタ]の各文字を押すと、
  それぞれのプログラムを起動することができます。
(11) プログラムを起動せずに画面を閉じる時は[戻る]ボタンを押してください



4-5.ファイルの削除
(1) [ファイル削除]ボタンを押してください。
  通常は、削除時にはゴミ箱は使用せず、直接ファイルを削除します。
  一度消したファイルは二度と戻らないので注意してください。
  [オプション設定]でゴミ箱を使用するようにも設定できます。
(2) 右クリックメニューから[選択ファイルを削除]を選んでも、同じことができます。
(3) [削除ログを残す]設定の時は、削除の内容が記録されます。万が一の時、リカバリ
  を支援するための情報になります。ログは5作業日分だけ保存されます。
(4) 260文字以上のファイルも削除できるようになりました(Ver.1.5から)
(5) 右クリックメニューから[選択ファイルを移動]を選ぶと、指定したフォルダに
  選択ファイルを移動させる事ができます。(Ver.1.5から)
  移動先に同名のファイルがあった時は自動的にファイル名をリネームします。
  なお、移動させるフォルダにリネーム情報を入れたログを残す事ができます。(Ver.1.5dから)
  また、フォルダ構造を再現して移動させる事も可能です。(Ver.1.5dから)

※削除の動作の整理
 ゴミ箱を使用する時:[削除]ボタンでシェルを使って削除。
           シフト+[削除]ボタンでダイアログを開いて選択
 ゴミ箱を使用しない:[削除]ボタンでダイアログを開いて選択
           シフト+[削除]ボタンでシェル経由で削除
 ダイアログ上で[ゴミ箱を使用]を選ぶ
           シェルを使う。書込み禁止ファイル等に対する警告は出ない
 シェル経由での削除のメリット/デメリット
  ○エクスプローラー互換動作なので、ちょっと安心
  ○ゴミ箱が使える。間違えて削除してしまっても復活できる
  ○削除中に作業を停止できる
  ×遅い気がする(正確にベンチマークをしたわけではないが)
  ×パス名が260字以上のファイルを削除できない



4-8.フォルダ比較(Ver.1.5dから)
(1)削除すべきフォルダの選択を補助するため、対象となるフォルダ内のファイル数を表示します。
  なお、フォルダ内にある[無視するファイル]はファイル数にカウントされません。
(2)ダブルクリックすると、エクスプローラでフォルダを開き、フォルダの中身を確認できます。
(3)[フォルダ選択]で、そのフォルダ内の重複ファイルを全て選択します。
  なお、下位フォルダ内のファイルは選択されません。
(4)[直ちに削除]で、そのフォルダ内の重複ファイルを全て削除します。
(5)[フォルダごと削除]では、そのフォルダ自身と内部のファイルを全て削除します。
  下位フォルダがある時はこの機能は使用できません。
  (将来的には選択的にして下位フォルダごと削除できるようにする予定)



4-7.オプション
(1) [オプション]ボタンで、検索時の動作等を変更することができます。
  検索中は、条件確認のため設定画面を開くことはできますが、
  条件を変更しても反映はされません
(2)ファイルの比較方法:以下の7通りの方法から選べます。
 [完全一致検索(1pass)]
  ファイルの中身を一文字ずつ完全に比較します。簡易検索よりも多少時間がかか
  りますが、確実です。ファイルサイズの小さい順に重複を調べていきます。
 [完全一致検索(2pass)]
  ファイルの中身を一文字ずつ完全に比較します。まず最初に32bitCRCを用いて予
  備的な検索を行ない、その後で内容の直接比較を行ないます。きちんとデフラグ
  されたディスクの場合、1passに比べ半分程度の時間で検索できる事があります
 [簡易検索(CRC32)]
  32bitCRCを用いて比較します。だいたいはこれで問題ありませんが、確率的には
  CRCが一致していても中身が異なっている事があり得ますので注意して下さい。
 [サイズを無視] (Ver.1.5から)
  ファイルの指定された範囲についてCRC32を用いた簡易検索により比較します。
  ファイルサイズが異なっていても、指定範囲の内容さえ一致していれば検出されます。
  指定範囲よりも小さなファイルは無視されます。
 [サイズと名前・日付]
 [サイズと名前のみ]
 [名前のみ] (Ver.1.5から)
  高速な簡易検索を行ないます。内容のチェックはしません。
(3)また、検索時の動作に以下のオプションを指定できます。
 [上位フォルダ名も一致] (Ver.1.5から)
  ファイルのあるフォルダ名が一致しているものだけが検出されます。
  バックアップの元と先を比較する時などに使うと有効です。
 [JPEGヘッダを無視する]
  JPEGファイルの先頭にあるヘッダ部分を読み飛ばして本体を比較します。
  検索時間が2〜3倍程度余分にかかります。
 [部分一致検索をする]
  ファイルの特定範囲のみを比較します。指定範囲の先頭より小さなファイルは無視
  されます。範囲指定の末尾が0の時は、ファイルの終端まで比較します。
  また[サイズを無視]の時は若干動作が異なり、末尾に0は指定できません。
(4) 自動選択の動作
 [日付で選ぶ]
  まず更新日時を比較し、同じ場合は作成日付を比較します。
  どちらも同じ時(あり得るのか?)は、最も上にあるファイルが残ります。
 [パス名で選ぶ]
  パス名をASCII順に比較して最小のものが残されます。
   例:"C:\"<"D:\"、"D:\Data"<"D:\Temp","C:\AAA.TXT"<"C:\BBB.TXT"
     "C:\DDD.TXT"<"C:\Bakup\DDD.TXT" (フォルダ名を先に比較するため)
 [長い(or短い)ファイル名を残す]
  その名の通りの動作をします
 [一番上のファイルを残す]
  基本です。ファイル並びの順番はリストの最上部をクリックする事で変更できます
 [選択しない拡張子]
  自動選択の際に、ExeやDLLなどの消すとトラブルの原因になりそうなファイルの
  削除を避けるためにあらかじめファイルを複数登録しておく事ができます
   例:*.exe;*.dll,*.ocx,*.pif;*.bat
  ワイルドカードが使用可能です。区切り記号には","(コンマ)か";"(セミコロン)を使います
(5) [検索フォルダの状態を記憶] (Ver.1.5から)
  検索対象フォルダのチェックの状態を保存するかどうか指定できます
(6)検索対象条件
 [指定サイズのファイルのみを検索する]
  単位は、クリックする事で[Byte]→[KB]→[MB]の間で変更可能です
 [検索するファイルを指定する]
  特定のファイルのみを検索できるようにします。ワイルドカードが使用可能です。
  区切り記号には","(コンマ)か";"(セミコロン)を使います
 [無視するファイルを指定する]
  特定のファイルを検索対象から外します。ワイルドカードが使用可能です。
  区切り記号には","(コンマ)か";"(セミコロン)を使います
  [検索する拡張子が指定]されている時は、このオプションは無視されます。
 [隠し・システムファイルも検索する]
  通常は、隠し・システムファイルは検索・比較の対象とはしません
  隠しファイルやシステムファイルも削除したいときにオンにしてください。
  (システムファイルは削除すると問題が起きる可能性が高いです。
   隠しファイルは削除するときに警告等がでませんので、注意して下さい)
 [システムフォルダは検索対象外] (Ver.1.5から)
  Windows,Winnt,System,System32等の重要なフォルダの中身は検索しません
  (システムフォルダ名の登録には、手動でUnDup.CFGを編集する必要があります)
 [0バイトのファイルも検索する] (Ver.1.5から)
  プログラムによってはゼロバイトのファイルを起動時に必要とするものがありますので
  削除する時は注意して下さい
(7)おまけ機能
 [空のフォルダを削除する]
  検索時に発見した空のフォルダを削除します。(重複ファイルの削除時に発生した空フォルダは
  削除されません。削除を行なうのは検索時のみです)
 [不要ファイルを削除する]
  検索時に該当ファイルを見つけた時に削除します。現バージョンではゴミ箱は使用できません
  また書込み禁止のファイルは削除する事はできません
  ファイル名の指定にはワイルドカードが使用可能です
  複数指定する時は区切り記号に","(コンマ)か";"(セミコロン)を使います
(8)その他の設定
 [検索後に自動ロック] (Ver.1.5から)
  検索済みとして登録してあるフォルダ内のファイルを、検索終了後にロックします
 [削除ログを保存する]
  これをチェックしておくと削除の内容が記録されます
  万が一の時、リカバリを支援するための情報になります。ログは5作業日分だけ保存されます
 [削除後にリストを整理する]
  通常は削除して重複している相手がなくなったファイルもリストに残りますが、
  これをチェックしておくと、削除後に自動的にそう言うファイルを非表示にし
  てくれます。なお、手動でShift+[検索]でも同じ事ができます
 [削除にゴミ箱を使用]
  ファイル削除の時にゴミ箱を使用します。
  何か問題があった時に元に戻せるようになります
 [下位フォルダも選択する]
  [フォルダ一括選択]等の動作の時に、選択フォルダの下位フォルダに含まれるファイルも
  対象にするかどうかを指定します。下位フォルダの重複ファイルの"検索"を制限する事は
  このオプションではできませんので、お間違えないように
 [検索フォルダの状態を保存] (Ver.1.5から)
  終了時に検索対象フォルダのチェックの状態を保存します
 [検索後にメッセージを非表示] (Ver.1.5から)
  通常は検索終了後にメッセージボックスが開いてお知らせしますが、
  これをチェックしておくと検索終了のメッセージが表示されません
 [色の設定]
  [配色]グループ内の色のついたボックスをダブルクリックすると、[色の設定]
  ダイアログが開き、重複ファイルリストの表示色を変更できます。色の違いが
  わかりにくい時は、ここでお好みの色に設定しなおして下さい。



4-8. コマンドラインによるバッチ処理
(1) コマンドラインに適当な記述をする事で、定型処理を自動化できます
(2) 指定できるコマンド(大文字/小文字は区別しません)
  -C string:CFGファイルを指定します。stringがファイル名でなくフォルダ名
        の時は、そのフォルダにあるUnDup.CFGを使います
        また、stringにフルパスでCFGファイルを指定する事も可能です
        'C'と'string'の間は、必ず1文字の半角スペースを入れて下さい
         (例1) -C D:\Utility\Undup
         (例2) -C D:\Utility\Undup\Type1.cfg
  -H    :作業フォルダを実行ファイルのあるフォルダに変更します
        作業フォルダを指定できないランチャをお使いの方は、これを指定して下さい
  -S[0-7] :検索を開始します。1-7で検索の動作を指定できます
        省略時はゼロと見なし、CFGファイルの設定に従います
  -A[0-7] :自動選択を行ないます。1-7で自動選択の動作を指定できます
        省略時はゼロと見なし、CFGファイルの設定に従います
  -M string:[string]フォルダ以下のファイルを全て選択します。
  -U string:[string]フォルダ以外のファイルを選択します。
  -D[0-2] :削除します。1でゴミ箱を使用せず。2はゴミ箱を使用します
        省略時はゼロと見なし、CFGファイルの設定に従います
        なお、削除コマンド実行前に選択操作を行っている必要があります
        また、CFGの設定に関らず、必ず削除ログを出力します
  -Q    :作業終了後にプログラムを終了します(CFGファイルは保存されません)
        このオプションが無い時は、手動で終了させる際にCFGファイルが上書きされます
  -N    :削除時に警告を一切出しません。変更不可やシステムファイルを
        削除する時も警告を出さないので、使う時は注意して下さい。
  -F[nnn] :検索対象フォルダを指定します。nnnには0-2の数字を指定します
        検索時対象にするフォルダには1を指定して下さい
        検索済みとして指定する時は2を指定して下さい
        -Fコマンドが無い時は、CFGファイル内の設定に従います
        nnnを省略すると、CFGファイルにある全てのフォルダを有効にします
        CFGファイルにあるフォルダを全て無視する時は0を指定します
        なお、-Sコマンドが無いときは-Fコマンドは無効です(仕様)
         (例) -F0100100 … 2番目と5番目のフォルダを選択
  string  :マイナス記号で始まらない文字列で、検索対象フォルダを指定できます
        CFGファイル中のリストと違い、これは必ず選択されます
        検索対象フォルダは複数指定する事ができます
         (例) "C:\My Picture" D:\Data
        なお、ここで指定したフォルダはCFGファイルには保存されません(Ver.1.5から)
        (既に同じフォルダがCFGファイル内に有る場合を除く)
(3) これらのコマンドを組み合わせると、ファイラなどから簡単に特定のフォルダの
  重複を検査/削除する事ができるようになります。
(4) フォルダ名・ファイル名がスペースを含む時は、全体をダブルクォーテーションで
  囲って下さい



4-9. Tips
(1) リスト上で右クリックするとメニューをポップアップします
  ここから、プログラム起動や、条件を指定して選択する事ができます
(2) 上段の検索フォルダのリストボックス上でも右クリックができます
  ここでは選択されているフォルダを対象に[フォルダ一括選択]などが可能です
(3) 操作が難しそうな項目やボタン上ではツールチップが表示されます
(4) ファイルのロックは、うまく活用すると選択操作の幅が拡がります
  例えば、フォルダAの中にあるフォルダBのファイル以外は削除したい時、まず
  フォルダBを選んでからロックし、次にフォルダAを選んで下さい

4-9.画面サイズの変更
(1) ウィンドウの右下隅をドラッグして引っ張ると画面の表示サイズが変更できます
  一度にたくさんのファイルを表示させたり、パス名が長くて名前を全部表示しき
  れないときなどには便利です
(2) 結果表示ウィンドウの最上部の灰色の部分(ヘッダ)は、境界線をドラッグする事で
  各項目の表示幅を自由に変更できます
(3) 検索対象フォルダリストの縦幅も、リスト上での右クリックメニューを使って変更
  する事が可能です

4-10.隠しオプション
(1) CFGファイルを直接編集する事で、いくつかの設定を変更する事が可能です。
 (Ver.1.5には間に合いませんでしたが、Ver.1.6では設定画面から操作可能にする予定)
(2) "SearchLowLevel" : 1にすると、下位フォルダの検索を行ないません。通常は0。
(3) "DeleteReadOnly" : 1にすると、「ついでに削除時」に書込み禁止ファイルの削除を許可します。
(4) "MaxBufSize"     : 検索時のバッファの最大使用サイズを指定します。
            搭載メモリの少ないマシンでは小さめに指定して下さい。
(5) "MinBufSize"     : 検索時のバッファの最小使用サイズを指定します。
            大きなファイルが検索対象にある時は、大きめの値にすると少し早くなります。



5.更新履歴(☆マークは重大なバグFixを示す)

(2004/??/??) 将来的な検討課題
・初心者向けにhtmlタイプのヘルプをキチンと整備する
 (ヒマがあれば……)
・ファイルを削除する時に、代わりにショートカットを作成する
 (ショートカットの目標をどうやって決めるか)
・「ついでに削除」でもゴミ箱が有効になる様にする
 (検索速度の低下をいかに防ぐか。書込禁止に対する対応も問題)


(2004/??/??) Ver.1.6までに採用予定(一部は1.5eで採用するかも)
・圧縮ファイルの中身も検索する(ZIP,CRC32による簡易検索は確定)
 (LZH,ZIPの完全比較は一度解凍しなくてはならないので面倒-未定)
 (他の形式,パス付き書庫の処理等も面倒なので未定)
・読込みをマルチスレッド化して、検索速度を向上させる
・DigestMakerとの連携。
・削除のアンドゥ機能の実装。ログ出力は既に対応済み。
 あとはログの読込み、表示の機能を付ければ簡単。
・[フォルダ比較]機能の強化。
 非重複ファイルを表示/確認/削除できる様にする。
 フォルダごと削除できる様にする
・自動選択の強化:条件を複数組み合わせる事ができるようにする
・A.I.選択の実装:危険度の高い[全選択]を廃止し、代りに実装
 安全確実に削除できる物を的確に判断し選択する
 (自動選択と違い、判断に迷うものは選択しない)
・[ファイル名で選択]で正規表現を使えるようにする


(2005/05/17) Ver.1.5g
・MP3のヘッダを無視して検索できるようにした("JPEGヘッダを無視"と兼用)
 対応しているのはID3v2とID3v1形式のみ。
 ID3v1形式だと、フィアルサイズが128バイト程小さく表示されますが、これは仕様です
・ファイル選択ダイアログで、フォルダ名、パス名が機能していなかった不具合を修正。
・ファイル削除ダイアログで、いくつかのボタンが機能していなかった不具合を修正。
・重複ファイルリスト読込み時の不具合を修正

(2005/02/03) Ver.1.5f
・ゴミ箱を使って削除する時に、確認ダイアログが開かないバグを修正
・ファイル選択時にサイズを指定していないと選択が効かないバグを修正
・検索対象リストの高さを変更時に、画面に余裕が有ればリストの順番変更用ボタンを表示するようにした
・Home/Endキーで、リストの最上部/最下部に移動する機能を付けた
・メニュー/ショートカットキー関係の不具合を修正

(2005/01/22) Ver.1.5e
・Ver.1.5cで発生した検索のバグを修正(済-20041228)
 (同サイズのファイルが大量にあると誤検出がおきるバグ)
 (Ver.1.4以前にあったバグと同じ箇所だが、Ver.1.5cで高速化の為に追加した部分で再発し、
  以前より条件的に起きにくくなっていたので気付かなかった)
・読込み時に存在確認する部分を別スレッド化(済-20041228,20050118)
・再検索時の存在確認する部分を少しだけ高速化(済-20050106)
・シェルを使わない削除/移動の処理を別スレッド化(済-20050119)
 途中で中断も可能(シェルを使っている場合は、若干のラグあり)。
・シェルを使わない削除/移動の処理時の無駄を省いて高速化(済-20050105)
・ファイル選択時に、サイズを指定できるようにする(済-20050105)
・更新日時と作成日時を逆に表示していたのを修正(済-20050105)
・2GBを超えるサイズのソートに問題があったのを再修正(済-20050105)
・ファイル検索時のメモリ消費量を1割ほど削減(済-20050105)
・完全比較時のメモリ割り当てアルゴリズムの確認(予定)
・β版で発生した削除関係のバグ取り(済-20050117)
・他にも色々とバグ取り(済-20050117)

(2004/12/19) Ver.1.5d
・スペースでファイルを選択できないバグを修正
・右クリックメニュー内のショートカットキーが無効になっていたバグを修正
・検索中に削除はできないように修正(選択や内容表示は今迄通り可)
・2〜4GBのファイルが正しくソートされないバグを修正
・ファイルの検索アルゴリズムを改良(少しだけ省メモリ化)
・「ファイルの移動」時に、フォルダ構造を保存する機能を追加
 また移動時にもログを書き出す機能を追加
・削除ログの仕様を変更。将来のUndo機能実装に備える。
・フォルダ選択時にロックする機能を追加
・フォルダ選択を支援するため『フォルダの比較』機能を追加した。
・検索フォルダの登録時に、フォルダへのショートカットのドロップに対応にした
・[全選択]を廃止し、代わりに[ファイル名で選択]を導入
・ファイルが大量に有ると、2pass検索や簡易検索が機能しないバグを修正。
 (このバグは1.5cで発生していた模様。スイマセン)
・シフト+削除でシェルを使わずに削除するようにしてみた。こっちの方が速いかな?
・削除(シェルを使わない時)と移動のダイアログを統一し、経過を表示するようにした。
・削除/移動後に空になったフォルダを削除するようにした。ただし上位に遡る事はしない。
・コンボボックスの動作の不具合を修正
(2004/07/28) Ver.1.5c
・「リストから除く」にバグがあったので修正
 (選択されている行の一つ下を削除していた)
・同じ原因で右クリックメニューの「上へ」「下へ」が動作しないバグを修正。
・検索時に時々メモリ関係でエラーが発生する事があるのを修正(したと思う)
・検索ルーチンを内部的にちょっと修正。パラメータを少し最適化。←★(バグ有り、Ver.1.5eで修正)
・[再検索]をするとエラーがでるバグを修正 (08/06)
・検索終了直後にエラーが出る事があるのを修正(08/12)
・他、細かい不具合の修正 (08/06)
(2004/07/22) Ver.1.5b
・コマンドラインから自動検索させた時に、重複ファイルが見つからないと落ちるバグを修正
・StringGridの表示を見直して、大幅に省メモリ化した
 (この関係で、一部表示に挙動不審なところがあるかも……)
・ワイルドカードを漢字(Shift-JIS)に対応させた
 (Shift-JISの2バイト目を大文字化して比較しまうと言うマヌケなバグを修正)
・検索フォルダのリストをStringGridに変更。横スクロールも可能になった。
 幅を調整すれば、[検査済み]の文字を表示させる事も可能
・検索フォルダの右クリックメニューに「検査済みフォルダに指定」を追加
(2004/06/06) Ver.1.5a
・検索終了のポップアップが出た時に、設定画面などを開いていると元に戻れなくなる不具合を修正
・ファイルサイズの表示の改善。[サイズ]を右クリックして表示形式を選択可能にした。
 全桁表示の時は、3桁毎にカンマで区切るようにした。
・「一番下のファイルを残す」を自動選択の動作に追加
(2004/05/31) Ver.1.5 正式公開
・右クリックメニューに「フォルダを開く」を追加
・「ついでに削除」の際に、書込み禁止ファイルも削除するように修正(隠しオプション)
・下位フォルダを検索しないオプションを追加(隠しオプション)


(2004/05/10) Ver.1.5β9
・削除ログに正しく書込まれない不具合を修正
・「長いファイルを選ぶ」が機能していなかったので修正
・拡張子指定をやめて、ワイルドカードを使ったファイル名指定に変更
・オプション設定画面を少し変更。バッファサイズの指定は隠しオプションにした。
・コマンドライン関係の処理を追加/修正
・まだ他にも直すべき所があった様な気がするけど、取り敢えず見切り公開。
(2004/04/26) Ver.1.5β8
・設定画面のラジオボタンの動作のバグを修正
 (検索方法と自動選択の設定で、色々と不具合があった)
(2004/04/21) Ver.1.5β7
・ファイルを削除する代わりに指定フォルダに移動させる機能を追加
・CRC32計算時にエラーがでるバグを修正
・自動ロック時に、検索直後に選択解除ボタンが使えないバグを修正
・その他、いくつかのバグを修正
・内部処理を整理
(2004/04/11) Ver.1.5β6
・設定画面の単位変更の動作を修正した
・比較アルゴリズムの改良を試みた(結局あまり効果がなかったので止めた)
・検索時のメモリ使用を効率化(以前より省メモリになった)
・ソート方法をMergeSortに変更
・[下位フォルダも選択]を復活
・UnDup本体からHTMLヘルプ(これ)を起動可能にした
・検索中に読込みエラーが出た時の対応を再修正
・その他、細かな不具合の修正
・システムフォルダの指定を可能にした
・260文字以上のパス名のファイルの削除時のバグを修正
(2004/03/30) Ver.1.5β5
・簡易マニュアル(要するにコレ)の整備(なんちゃってhtml化)
・ソート方法を安定化QuickSortに変更
・検索フォルダリストの縦サイズを可変にした
・細かな不具合の修正
(2004/03/27) Ver.1.5β4
☆ファイル削除後の表示がおかしくなっていたのを修正(Ver.1.4以前は問題なし)
・JPEGヘッダを無視した時の比較速度の高速化
・部分一致検索時に、検索終了後にサイズでソートして表示するように変更
・サイズでソートする機能を完全に実装
・260文字以上のパス名のファイルの削除を可能にした(ゴミ箱未使用時のみ)
・同じフォルダ内のファイルのみ比較するオプションを用意した。
・ロックされたファイルがある時、自動選択で他を全部選択する様にした
 (これまではロックされたファイルは無視して必ず他に1つ残していたので、
  自動選択後→削除→全選択→削除の動作が必要だった。
・横サイズを変更した時に、ファイル名とフォルダ名の幅を自動調整する
・閲覧設定画面の位置を保存。横幅を可変に変更。
(2004/02/23) Ver.1.5β3
・選択解除で、ロックファイルは解除しない様に変更。
 ロックも解除したい時はシフトキーと同時にボタンを押すか、右クリックメニューを使用。
・検索済みフォルダの指定方法を変更(フォルダリストを右クリックして灰色表示させる)
・検索済みフォルダ内のファイルは自動的にロックされるオプションを追加
・検索終了後に表示を出さないオプションを追加する
・サイズでソートする際、通常はグループ内でサイズでソート、
 シフトを押しながらだとグループ内でソート後に全体をソートする様にした
 (注:現在は全体の順番を逆にするだけで、ソートはしない)
・ヘッド部分のクリック時の動作を色々と修正
・検索中はソートが効かない様に修正
・検索前にクリックすると、ヘッダーが消えるバグを修正
・グリッド右の空白をクリックするとエラーがでるのを修正
・ファイル削除後にヘッダ表示がおかしくなるのを修正
・再検索でエラーが発生するバグを修正
・読込みが正常に機能していなかったのを修正
・ボタンの許可処理にあったバグを修正
(2003/11/10) Ver.1.5β2
・サイズを無視(部分一致)で、ファイルサイズ順にソートして表示
・検索対象フォルダのリストボックスもホイール対応にした
・作業フォルダのCFGファイルをチェックし忘れていたのを修正
・選択ファイルの関連づけ実行のバグを修正
・[重複検査済みフォルダ]の指定を廃止
 代わりに、検索対象フォルダを右クリックしてグレーにすることで、
 そのフォルダ内のファイルは検索済み、と判定する。
 また検索終了時に、そのフォルダ内のファイルは全てロックする。
(2003/10/23) Ver.1.5β1
・結果の最上部のクリックで、サイズ順にファイルをソートする機能を付ける
・同日付やファイル名のクリックで、各グループ内でソートする機能を付ける
・フォルダ選択のバグを修正
(2003/10/20) Ver.1.5β0
・結果表示欄をCheckListからStringGridに変更。これに伴ういくつかの変更
・StringGridをホイール対応にした
・128字以上の長いフォルダ名は8.3形式で格納するように変更
 (表示の見やすさと、パス名が260字を超えない様にする事を考慮して)
・パス名が260字を越えたファイルも削除できるように修正
 (8.3形式に変換して削除する。それでも260字を超える時は失敗)
・Shellを使っての削除がたまに失敗することがあるため、
 シフトを押しながら[削除]でDeleteFile()での個別削除を行なう機能を追加
・コマンドラインオプションに-mと-uを追加(フォルダ選択/フォルダ以外を選択)
・「ファイル名の短いものを残す」オプションを追加
・拡張子指定などにワイルドカードが使えるように準備(未対応)
・サイズを無視して検索するオプションを準備(未対応)
・初心者向けに特定フォルダは検索対象としないオプションを追加(未対応)
・削除ファイルが100を越える時は進行状況を表示するように変更

(2003/06/04) Ver.1.4c
・「以下の拡張子のファイルを削除する」のチェックの動作がおかしかったのを修正
(2003/05/15) Ver.1.4b
・コマンドラインオプションで、動作にバグがあったのを修正
 (-Qでハングアップする、等)
・コマンドラインオプションに"-N"を追加(削除時に警告を出さない)-(2003/05/25)
(2003/04/26) Ver.1.4a
・チェック欄を右クリックした時に、警告が出ることが有るのを修正
・検索対象リストから[検索済みフォルダ]を指定できるようにした
・[検索済みフォルダ]に検索対象リストのフォルダより上位のフォルダを指定すると
 設定が無視されてしまうバグを修正
・マニュアルに[配色の変更]を追記(今迄書き忘れてた)
・検索終了時にメッセージを表示。ついでに検索時間も表示するようにした
(2003/04/12) Ver.1.4 正式公開版
・簡易検索を途中で中断した時の動作にバグがあったのを修正
・ファイル選択ダイアログの拡張子指定の不具合を修正
・簡易マニュアル(このファイル)の整理
・その他、細かい修正を数点

以下、一部のみ抜粋

(2003/04/08) Ver.1.4β7
・削除時にログを残すオプションを実装
・起動オプション(コマンドライン)によるバッチ処理の実装
(2003/04/04) Ver.1.4β6
(2003/03/22) Ver.1.4β5
(2003/03/20) Ver.1.4β4
(2003/03/18) Ver.1.4β3
☆漢字のファイル/フォルダ名に対しフォルダ選択で不具合が起きていたのを修正
・自動選択で危険性の高いexeなどの拡張子は選択しない機能を追加
(2003/01/23) Ver.1.4β2
・検索アルゴリズムを見直して、2Pass検索を追加。
 例外もあるが、ほとんどの場合2〜5割程度高速化。(デフラグ直後だと、爆速)
(2003/01/18) Ver.1.4β1
(2003/01/17) Ver.1.4β0
・検索対象ファイルを細かく絞りこめるようにした
・32bitCRCを使った簡易検索を可能にした
・検索対象フォルダを指定してフォルダ選択ができるようにした。
・ファイルのプロパティ表示をつけた
・JPEG画像のヘッダを読み飛ばして比較する機能を付けた。

(2002/12/11) Ver.1.3f
・画面解像度が想定(96dpi,小さいフォント)と違うと正しく表示できない不具合を修正
(2002/11/30) Ver.1.3e
☆スレッドの破棄手続きで、メモリリークする事があったのを修正
(2002/11/26) Ver.1.3d
(2002/11/22) Ver.1.3c
(2002/11/18) Ver.1.3b
(2002/11/13) Ver.1.3a
(2002/11/10) Ver.1.3
・詰め込みたい機能はだいたい実装したので、正式版として公開

(2002/11/08) Ver.1.3β6
・ドラッグ&ドロップでエクスプローラなどから検索対象フォルダを設定可能にした。
(2002/11/07) Ver.1.3β5
(2002/11/05) Ver.1.3β4
(2002/11/05) Ver.1.3β3
☆比較時のメモリ管理を徹底し、より省メモリで検索できるようにした。
(2002/11/01) Ver.1.3β2
(2002/11/01) Ver.1.3β
☆検索対象フォルダが重複している時、まれにエラーが発生するのを修正

(2002/10/27) Ver.1.2f
(2002/10/24) Ver.1.2e
☆Windows9x系で、削除時にSHELL32.DLLがエラーを起こす現象を回避した。
(2002/10/23) Ver.1.2d
・検索対象フォルダがルートフォルダの時に、正しく一致検索ができないバグを再修正
(2002/10/22) Ver.1.2c
・サイズ0のファイルは一致とは見なさないように変更(完全一致検索時)
(2002/10/20) Ver.1.2b
(2002/10/15) Ver.1.2

(2002/10/14) Ver.1.2β4
・UIの変更:ボタンを2列にして、右クリックメニューを廃止してみた。
(2002/10/10) Ver.1.2β3
(2002/10/05) Ver.1.2β2
(2002/09/29) Ver.1.2β

(2002/09/27) Ver.1.1 幻のバージョン
(2002/09/25) Ver.1.0
(2002/09/24) Ver1.0β完成。




6.既知の問題点、等

●検索対象フォルダとして、ネットワーク上のフォルダも選択できてしまう。
 テストしていないので、ネットワーク上のファイルの検索/削除は保証外とさせて
 いただきます。

?260文字(=MAXPATH)以上のパスを検索対象パスに登録すると、エラーが発生する。
 (発生するとしたらOS側の問題なのでどうしようもない)

●漢字(2バイト文字)を使ったファイルは、検出ミスの原因になる可能性がある
 だいたい問題の起こりそうな箇所は修正したつもりだが、見落としがあるかも。

△ファイルサイズの表示で、87GB以上のファイルは全桁表示ができない。
 (自動的にMB表示されます)

●Unicodeのファイル名には対応していません
 現在の所、対応する予定はありませんが、将来的には検討しようと思います。

●検索直後の右クリックの動作等が少しおかしい事がある



7.シェアウェア化について

○Ver.1.5正式版より、UnDupはシェアウェアとなります。
 料金は 600円(送金手数料別) です。
 なお本体価格に対しては消費税は不要です。
 (Vectorの場合は、消費税相当額がこれに加算されます)

○ただし、試用にあたり機能制限は一切ありませんし、試用期限も特に設けません。
 また、サポートや要望について、登録の有無で対応を差別する事もありません。
○要するにカンパウェアと言う奴です。ユーザー様の善意に基づく寄付に期待する
 ものであり、本ツールを気に入ってくれたなら、その程度の価値はあるツールだと
 お認めいただけるなら、作者にお小遣いを恵んでいただけると大変ありがたいです。
○なお、登録いいただいてもユーザー様には自己満足が得られる以外のメリットが何
 もありません。登録は義務ではなく、あくまでもユーザー様個人の善意の判断に基
 づくものとさせていただきます。

○また、本ツールを他人に薦める場合には「実質フリーのシェアウェア」として宣伝
 いただけるとありがたいです。あるいは「カンパウェア」でも良いですし、また、
 実体は今までと変わっていませんので「フリーウェア」としておいても別に構いま
 せん。シェアウェアと言う点を強調されると、送金が義務の様に受け取られてしま
 いかねませんので、その辺にもご配慮いただければ幸いです。

○送金手段としては、Vectorのシェアレジ(手数料 税込み105円、要クレジットカード)
 および@niftyの@Pay(手数料無料、@Nifty会員登録(無料)が必要)を用意致しました。
 下記アドレスよりバナーをクリックして送金手続きを行って下さい。

 シェアウェア送金ページ:
   http://hp.vector.co.jp/authors/VA032597/Software/share.html

 なお、@Payの方は300円、1000円、2000円、3000円の送金も受付られるようになって
 います。(建前上は、300円は学生向けの割引料金、1000円は2ライセンス、2000円は
 人数無制限、と言うことになりますが、あまり気にする必要はありません。UnDupの
 価値に見合うと思われる金額を送金していただければ幸いです)

○クレジットカードが使用できない方には、ご連絡いただければ郵便為替の送付先を
 折り返しお伝え致します。定額小為替を使うと、手数料10円+郵送料(80円)と、意外
 に安く送金できる事を最近知りました。(その分、手間がかかりますが)
 なお、一応こちらとしては個人情報(住所氏名)を明かす事になりますので、それなり
 に信用できるメールアカウントを使ってご連絡いただけると当方も安心してお返事が
 できます。そのあたりもご配慮いただければ幸いです。



8.著作・連絡先、等

○ 本プログラムの著作権は Sim-G が所有します。
 転載・雑誌等への掲載はご自由にしていただいて構いませんが、実行ファイルと共に
 必ず付属のドキュメントファイル(要するにコレです)を改変することなく添付して下
 さい。また事後でも良いのでご連絡下さると嬉しいです(何処でどのように紹介され
 ているのか興味があるだけで、転載・掲載を拒否する事はありません)。
 雑誌への掲載の場合、見本誌を送付していただけると嬉しいです(これは義務ではあ
 りません。見本誌の送付に関しては各誌の方針に従います)。メールをいただければ
 折り返し送付先をご連絡致します。

○ 本プログラムは Borland社のBorland C++Builder Ver.3.0を用いて作成しました。
 必要なランタイム等はすべてプログラムに内臓されていますので、DLLファイル等
 を別途インストールする必要はありません。

○ 本プログラムは、作者の以下の環境でテストを行っています。
 (1)主開発環境
   自作 PC/AT互換機 (AthronXP 1800+ 256MB)
   Windows 2000 SP2 XVGA(1600x1200 32bit color 96dpi)
 (2)副開発環境
   自作 PC/AT互換機 (Pentium3 550(oc763)MHz 384MB)
   Windows 2000 SP2 XVGA(1280x1024 32bit color 96dpi)
   Windows98(無印) XVGA(1280x1024 32bit color 96dpi)
 (3)旧式機テスト環境 
   Dell OptiPlex Gn+(Pentium MMX 266MHz, 32MB)
   Windows95 OSR2, SVGA(800x600, 16bit color, 120dpi)

○ 本プログラムの最新版は、作者のホームページに置いてあります。
   本店(Vector) :     http://hp.vector.co.jp/authors/VA032597/
   2号店(Livedoor) : http://simg.ld.infoseek.co.jp/

 また、以下のサイトからもダウンロードできます。
   Vector : http://www.vector.co.jp/soft/win95/util/se257656.html

 ただし、ベクタ−への登録は、手続きの都合で1〜2週間程度の遅れがあります。
 (マイナーアップデートやβ版は、登録を省略する事もあります)
 登録申請から手続き完了の間にバージョンアップしている事もありえますので、
 最新版が必要な方は作者のホームページでご確認ください。

○ 本プログラムは自己責任で使用してください。重要なファイルを本プログラムを使用
 して消してしまった、等により損害が発生した場合、たとえ本プログラムの不具合等
 にその原因があったとしても、作者は一切責任を負いません。
 ただし、本プログラムにバグがある事が判明した場合は、全力を以ってバグの除去に
 取り組みますので、ご連絡ください。

○ バグ報告時には、使用されたPCの環境(メモリ、OSのバージョン等)をお教え
 ください。またエラーメッセージが出た場合、その時の作業内容(ステータスバー
 の表示、比較中とか検索中とか)もお教えください。特定のフォルダやファイルを
 対象にした時に問題がでる場合は、まずチェックディスクを行ない、もしハード側
 に問題がなかった場合にはそのファイル数やサイズや名前についての情報もいただ
 けると、非常に助かります。

○ 感想、バグ報告、改良希望などの連絡は、下記のメールアドレスにお願いします。
    HGA01077@nifty.ne.jp
 また、下記の掲示板もご利用可能です。
   「感想、その他、なんでも掲示板」
    http://www1.bbs.livedoor.com/simg_novel/bbs_tree
 要望に関しては、必ずしも全てに対応できるかどうかはわかりませんが、できる
 だけ善処したします。