最初にご注意
matome.exeは起動時/終了時に設定ファイルの作成/再作成を行いますので、必ず書き込み可能なドライブに
置いて下さい。
1.「ひとまとめ」って何?
いろいろなフォルダに散らばっているファイルをひとつのフォルダにまとめようとしたとき、同名のものがあると、
(1)いちいち上書きするかどうか判断する必要がある。
(2)上書きしなかったファイルは名前を変えてから移動しなければならない。
という面倒な作業があります。
そこでこのツールを使えば、その面倒くささから開放されます。
2.このツールの機能は?
(1) 移動先に同一ファイル名がある場合、ファイル名に自動的に連番を付けて移動します。
(2) まとめる対象にフォルダを指定した場合は、設定により2種類の動作が可能です。
@ その中のファイルをすべて移動した後にフォルダを削除する。
->複数のフォルダの中身をひとつのフォルダにまとめるときに便利。
A フォルダの階層を維持したままファイルとフォルダを移動する。(同一ファイル名は連番付加)
->フォルダ階層がよく似たフォルダ同士をまとめたいときに便利。
(3) ファイル内容の完全一致チェックもできるので(CRC32を使用)、必要なファイルが削除されることもなく
安心です。(CRC32チェックを使うと遅くなるので、使わない設定も可能)
(4)フォルダ階層を維持するモードと、ファイル/フォルダを移動しないでコピーだけするモードを合わせて使うと
簡易バックアップ用途にも使えます。
(5)書き込み以外のエラーを無視して動作を続けることができるので、壊れかけたメディアからできるだけデータを
取り出したいという場合、効率的に作業ができます。
3.動作に必要なファイル
「ひとまとめ」を実行するためにはVB6のランタイムが必要ですので以下の場所あたりから
ダウンロードしてインストールしてください。
http://www.vector.co.jp/soft/win95/util/se152941.html
このランタイムパッケージはファイルサイズがかなり大きいのですが、VB6で作られたほとんどのアプリを
動かすことができるので、インストールしておくことをお奨めします。
4.具体的な操作/動作
(1)移動先フォルダを設定します。移動先フォルダをウィンドウにDrag&Dropして下さい。
(2)移動したいファイル/フォルダをウィンドウにDrag&Dropすると移動を開始します。
○移動先に同じファイル名で同じサイズのファイルがある時->移動しようとしたファイルを削除
->ポップアップメニューの設定によって少し動作が変わります。(後述)
○移動先に同じファイル名で違うサイズのファイルがある時->ファイル名に"_nnn"(nnnは連番)を付けて移動
○移動先に同じファイル名のファイルがない時->そのまま移動
○移動元と移動先が同じフォルダの時->何もしない(エラーにもならない)
○フォルダをDropした場合は、"(4)「フォルダ構造を維持する」チェックボックスについて"を参照。
(3)ポップアップメニューについて
フレーム内の何もないところで右クリックするとポップアップメニューが出ます。各設定項目の前にチェックが
ついている場合、その項目が有効になっていて、その項目を選択することでON/OFFが切り替わります。
@実行ボタンを使う
ON->移動したいファイル/フォルダをDropしたのち実行ボタンを押すと動作を開始します。
OFF->移動したいファイル/フォルダをDropすると動作を開始します。
実行ボタンを使わない場合、Drag元のフォルダ(またはそれを含むエクスプローラ)は、動作終了まで
操作不能となります。これは非常に使い勝手が悪いので、ワンアクション増えることを承知で
実行ボタンを使うという選択肢を加えました。
A連番を拡張子の後ろに付ける
ON->連番を拡張子の後ろにつけます。例:aaa.txt->aaa.txt_000
OFF->連番を拡張子の前につけます。例:aaa.txt->aaa_000.txt
連番を拡張子の後ろに付ける場合のメリットは、「種類」でソートすると、連番を付加されたファイルと
そうでないものとを簡単に区別できるということです。通常は拡張子の前にしておく方がいいかもしれません。
ちなみに連番の桁数は、999までは3桁、1000を超えると必要な桁数となります。
(例: 1->001 , 25->025 , 789->789 , 1089->1089)
BCRC32を使用する
ON->ファイル名とサイズだけでなく内容が一致しているかどうかを完全にチェックします。
但し、完全一致チェックを行うのは同じファイル名かつ同じサイズのファイルのみで、下記のように動作します。
○完全一致の時->移動しようとしたファイルを削除
○一致しない時->ファイル名に"_nnn"(nnnは連番)を付けて移動
OFF->ファイル名とサイズが一致しているファイルは同一ファイルとみなして削除します。
ファイル名とファイルサイズだけで同じファイルかどうかを判断すると、テキストファイルで内容が"aa"のものと
"bb"のものは同一と判断されて片方が削除されてしまいます。これを防ぐためにCRC32を使ってファイルの
内容をチェックできるようにしました。
基本的にこの設定はONで使うことをお奨めしますが、巨大なファイルのCRC32の計算には結構時間が
かかるので、そのような場合はOFFにして使ってください。
Cすべての同名ファイルをチェックする
ON->同名の可能性があるファイルをすべてチェックします。
OFF->同名ファイルの可能性を無視してチェックします。
例えば移動先フォルダに、a.txt、a_000.txt、a_001.txtという3つのファイルがあったとします。ここにa.txtという
ファイルを移動しようとしたとき、a_000.txtとa_001.txtは、元はa.txtというファイル名であった可能性があるので
ファイルの比較を3回行う必要があります。
このようにすれば同名で同一内容のファイルは確実にひとつにできますが、a_000.txt-a_999.txtまで1000個の
ファイルが存在したりすると、毎回1000回の比較が必要となり非常に時間がかかります。そこで、同一名の可能性を
無視してチェックを行うモードを作りました。
この設定がOFFの時は上の例の場合、a.txtとの比較のみを行い、a_000.txt、a_001txtとは比較を行わないため、
条件によっては劇的に速度が上がります。(実績で約30倍)
この設定がOFFの場合は不要なファイルが残る可能性がありますが、実害はあまりないと思われますので
適宜ONの設定と使い分けると便利です。
D書き込みエラー以外を無視する
ON->書き込みエラーが起こった時だけ動作を停止します。
OFF->何らかのエラーが起きた時、動作を停止します。
作者の想定している使い方は、
「壊れかけているHDDからできるだけデータを取り出したい時に使う」
です。
一部が壊れて、所々でデータを読み出せない状態になったメディアから、できるだけデータを取り出したい
というとき、読み込みエラーが起きるたびに動作を停止されてしまうと非常に面倒です。このようなときに、
そのエラーを無視して動作を続けてくれると便利なので、機能追加してみました。
(4)「フォルダ構造を維持する」チェックボックスについて
チェックON/OFFにより、フォルダをDropしたときの動作が異なります。
@チェックOFF
Dropされたフォルダの中のファイルをすべて移動先に移動した後にフォルダを削除します。
複数のフォルダをひとつにまとめる必要があるときに、非常に有効です。
AチェックON
同名のフォルダが移動先に存在しなければ、フォルダのまま移動を行います。
同名フォルダが存在すると、移動先と移動元のフォルダの中身を比較してファイル移動を行います。
この機能により、フォルダの階層構造を保ったままでファイルをまとめることができます。
コピーモードの場合は、元ファイルを削除しない以外は移動モードと同様の動作です。
(5)プログレスバーについて
動作中には進行状況を示すプログレスバーが表示されますが、かなり手抜きの仕様になっています。
具体的には、
「最初にDropされたファイル/フォルダの総数を100として、処理がいくつまで終わったか」
を示しています。(フォルダ内のファイル数やファイルの容量はチェックしていない)
従ってサイズの大きなファイルがあったりするとそこでプログレスバーが長時間動かないということに
なりますから、終了する時間が正確にわかるわけではありません。
最初にファイルの容量チェックをすれば、かなり正確な進行状況が表示できるのですが、移動開始が
遅くなるのがいやだったのでこのような仕様にしました。
(6)ファイルの移動/コピーの動作モードについて(Ver.0.3.2で新設)
Ver.0.3.2からファイル/フォルダを移動しないで、コピーだけするモードを作りました。
フレーム内のリストボックスで移動かコピーかを選択してください。
作者の想定している使い方は、履歴を残した簡易バックアップで、フォルダ構造を維持するモードと合わせて使うと、
内容の変わっていないファイルは特に何もされず、内容が新しくなったファイルは 連番付加後に追加されるという
管理が可能です。
また、コピーモードでコピーしておいて、正しくコピーされたことを確認した後に移動モードを使用すると
ほとんど同じ時間で、より安全なファイル移動を行うことができます。
5.わかっている問題点
○ネットワーク上のフォルダにファイル/フォルダを移動しようとすると、どこかへ消えてしまう場合がある。
これは「マイネットワーク」(Win2000の場合)の中に表示されるフォルダを移動先に指定すると発生する可能性があります。
(酢こんぶの場合、自宅で発生するが、会社では発生しない)
ネットワーク上のフォルダを移動先に指定して、そのパス名が"\\"で始まっていない場合に発生します。
この場合、ネットワーク上のフォルダにドライブ名を割り当てて、それを移動先に指定するか、ネットワーク上のフォルダの中に
フォルダを作って、それを移動先とすることで回避できます。
○日本語以外の2Byte文字に対応していない。
これはVB6のコントロールがUNICODEに対応していないのが原因ですが、対応策がよくわかりません。
これにより、ファイル名に該当文字が使われているとコピーや移動ができないという不具合が起きます。最悪の場合、移動先に
ファイルがない状態で元ファイルが削除されることになりますが、これに気づいてからはコピー/移動先にファイルがあることを確認
するようにしたのである程度は防ぐことができます。しかし同一ディスク内の移動は移動コマンド一発であるためにチェックできず、
ここでエラーが 起きないとファイルが失われます。
ファイル名に日本語以外の2Byte文字が使われている場合は「ひとまとめ」を使わないでください。
6.動作確認した環境
動作確認は基本的にWindows2000/XP環境のみで行っています。おそらくNT4でも動作するとは思うのですが、保証の限りでは
ありません。また、CopyFileExを使っているので、95/98/Meでは動作しないはずです。
Ver.0.2.6は、NT4で動作することをiiyamaさんが確認してくださっています。
7.著作権等について
本ソフトはフリーウェアです。金品を得る/サービスを受ける等の目的以外であれば無料でご使用/配布いただいて構いません。
但し著作権は作者である酢こんぶに帰属することとします。
本ソフトは正しく動作するよう注意を払って作成されていますが、その動作を保証するものではなく、その動作によって生じた
いかなる障害、損害についてもその責を負いません。
転載等については酢こんぶまでお問い合わせください。またリンクに関しては特に承諾は必要ありませんが、トップページに
リンクいただけるようお願いします。
8.謝辞
「ひとまとめ」のアイコンは、かるた堂のコスプレ写真でおなじみ「yasu」氏が作ってくれました。ここに感謝の意を表したいと思います。
ところでこのアイコンは駄洒落なんですけど、わかりました?(^_^;
9.変更履歴
2008.2.21 Ver.0.4.2公開
○ネイティブコードコンパイルするようにした。(CRC32計算とかが速くなった)
○ファイル容量が0byteのときオーバーフローが起きるのを修正した。
○移動/コピー動作の後に、正常終了したかどうかチェックするようにした。
但し、同じドライブ内での移動時はMoveFileコマンドのエラー処理任せ。
○CRC32ルーチンの中で、DoEvents発生頻度を1MB処理ごとにした。
(このイベントでかなり時間がかかるようなので)
○CRC32ルーチンの中で、比較相手が複数(a.txtに対してa.txt,a_000.txt,a_001.txt...とか)のとき、
比較元ファイルのCRC32を相手の数だけ複数回計算していたのを1回のみにした。
○CRC32計算で空きメモリ以上のファイルサイズに対応していなかったのを、2G上限(long型の制限)に修正した。
○CRC32計算を中止できるようにした。
2007.10.18 Ver.0.4.1公開
○CopyFileExを使って大きなファイルコピー中に無反応になる問題を解決した。
○上記に伴い、いつでも動作をキャンセルできるようになった。
○フォームのキャプションに処理中のファイル名と進行状況を表示するようにした。
○動作環境から、95/98/Meをはずした。
○CRC32を使う設定で無反応になる問題を解決した。
○CRC32チェックの進行状況を表示するようにした。
○連番の位置によってサブルーチンを分けていたのをひとつに統一した。
2007.10.18 Ver.0.3.6(95/98/Me対応最終バージョン)
○移動元(コピー元)フォルダの中に移動先(コピー先)フォルダがある場合に何もしないようにした。
(無限ループになるので)
○ファイル単位で移動(コピー)した時刻を表示するようにした。
○フォルダの作成、削除を表示するようにした。
2005.07.26 Ver.0.3.5公開
○移動完了後のフォルダ削除時、フォルダ内にファイル/フォルダがある場合はフォルダを削除しないようにした。
(移動中のフォルダに書き込みがあると、そのファイルを移動せずにフォルダ削除してしまうことがあった)
○対応OSにWinXPを追加。(動作確認環境が揃っただけ。プログラム的には特に何もしていない)
○WinXPで、プログレスバーとボタンが重なってしまう問題を解決。(見た目の問題だけ)
2004.08.17 Ver.0.3.4公開
○書き込み先容量不足とその他の書き込みエラーの処理を(やっと)追加。
○サイズの大きなフォルダ処理時に無反応になる点を少し改善。
これによりフォルダ構造維持の時、フォルダ階層が深いと時間がかかるようになった。(T_T)
○実行経過の表示方法を変更。処理中は処理しているファイルのみ表示し、処理終了後に
すべての経過を表示するようにした。
○書き込みエラー以外のエラーを無視するモードを作った。(壊れかけHDDからのデータ読み出し用)
2004.05.07 Ver.0.3.3公開
○実行ボタンで移動(orコピー)開始するモードを追加。
○実行経過が表示されるように変更。
○実行途中で中止できるようにした。
2003.07.23 Ver.0.3.2公開
○ファイルを移動するのではなくコピーするモードを追加。
2003.02.11 Ver.0.3.1公開
○フォルダの階層構造を維持しつつファイルをまとめる機能を追加。
2002.09.28 Ver.0.2.7公開
○プログレスバー実装。進行状況を把握できるようにした。(ちょっと手抜き)
○同名の可能性があるファイルをチェックしないモードを新設。条件によっては30倍程度のスピードアップ。
○ファイルをドロップするボックスをリッチテキストボックスに変更。64Kの制限がなくなった。
・いままでは64KBを超えるログは表示されなかった。
・この改良に伴ってコードを見直した結果、少しだけ速くなった。
2002.09.14 Ver.0.2.6公開
○CRC32を使用してファイルの同一性をチェックできるようにした。
2002.05.13 Ver.0.2.5公開
○移動先が移動元に含まれていないのに、含まれていると判断する問題を修正。
○最大化ボタンを無効にした。(意味がないので)
2002.03.05 Ver.0.2.4公開
○終了時に開始時刻と終了時刻の両方を表示するようにした。
2002.01.29 Ver.0.2.3公開
○連番の位置を設定で変更できるようにした。
○処理の開始時刻を表示するようにした。
○アイコンを付けた。
2001.12.03 Ver.0.2.2公開
○移動先フォルダのRename、移動等ができなくなる不具合を修正。
○移動先が移動元に含まれていると移動先が削除されてしまう不具合を修正。
○処理を終了した時刻を表示するようにした。
2001.11.15 Ver.0.2.1公開
○フォルダドロップ時の動作仕様を変更。フォルダに含まれるファイルをすべて移動するようにした。
○大きな仕様追加のため、Ver.を0.2.xとした。
○コードを見直し、全体的な整理とFunction化を行った。
○最後にファイル移動を行ったフォルダを削除できない問題を解決した。
2001.11.10 Ver.0.1.4公開
○フォルダの移動に対応。
2001.11.06 Ver.0.1.3公開
○ファイル属性が、隠しファイル、システムファイルの場合に移動できない件を修正。
2001.09.04 Ver.0.1.2公開
○最小化時にエラーで落ちる件を修正。
2001.07.21 ネットに公開
|