UnifyZip

〜書庫統一〜


目次


動作環境

Windows 2000, XP, 7


※動作には「7-zip32.dll」が必要です。

7-zip32.dll
作者		Akky さん
作者ページ	http://akky.cjb.net/


また「UNLHA32.DLL」があればLHA形式のファイルも扱えます。
(ただし、処理後のファイルはzip形式となります)

UNLHA32.DLL
作者		Micco さん
作者ページ	http://www2.nsknet.or.jp/~micco/micindex.html


加えて「unrar32.dll」があればRAR形式のファイルも扱えます。
(ただし、処理後のファイルはzip形式となります)

unrar32.dll
作者		亀井 哲弥 さん
作者ページ	http://www.jsdlab.co.jp/~kamei/

なお unrar32.dll の動作には unrar.dll が必要です。

unrar.dll
作者		Eugene Roshal さん
作者ページ	http://www.diana.dti.ne.jp/~winrar/


さらに「UNZIP32.DLL」があれば「7-zip32.dll」で扱えない形式のZIPファイルを扱えることがあります。

UNZIP32.DLL
作者		shoda T. さん
作者ページ	http://www.csdinc.co.jp/

目次へ


構成ファイル

(以下の3つは全て同じフォルダにいれてください)

UnifyZip.exe
・・・アプリケーション本体

UnifyZip.ini
・・・設定ファイル

readme.html
・・・本ファイル

目次へ


インストール・アンインストール方法

インストールは適当なフォルダへアーカイブファイルに含まれる全てのファイルを入れてください。
アーカイブの内容については「構成ファイル」の項を参照してください。

アンインストールは、そのフォルダとその中の全てのファイルを削除してください。
レジストリは一切操作していません。

目次へ


概要

zip(lzh, rar)ファイルに対して

 ・任意のファイル名や拡張子のファイルを取り除く(正規表現で指定)
 ・任意のファイル名や拡張子のファイルのみ残す(正規表現で指定)
 ・圧縮率を変更する
 ・空フォルダを取り除く
 ・冗長なフォルダを削除する
 ・ファイル、フォルダの更新日時を変更する
 ・ファイル、フォルダの属性を変更する

といったことを行うツールです。

UnifyZipで処理を行えば
同じものを圧縮してあるはずなのに
二つの書庫が完全に同じものにならない
という状態を解消できます。

手持ちの書庫を処理してみれば実は同じ書庫だった
なんてことがきっとあるはずです。

(あと lzh, rar → zip へのコンバーターとしても使えます…。)

目次へ


使い方

処理を行いたいzip(lzh, rar)ファイルまたは
処理を行いたいzip(lzh, rar)ファイルが含まれるフォルダを
UnifyZip.exeにエクスプローラなどからドラッグアンドドロップすると
コマンドプロンプトが現れて処理が開始されます。
コマンドプロンプトには実行のログが出力されます。

複数のファイルやフォルダをドラッグアンドドロップすることもできますが
あまり多くのファイルを渡すとエラーが出ます。
(恐らくWindowsの仕様による制限)

フォルダが渡された場合はそのフォルダ内のファイルを処理します。

各種設定は「UnifyZip.ini」を編集することで行います。
詳しくは「オプション」の項を参照してください。

目次へ


オプション

PriorityClass :

	プロセスの優先度を指定

	0	:	通常
	1	:	低
	2	:	高
	3	:	リアルタイム
	4	:	通常以下
	5	:	通常以上


SearchSubfolders :

	フォルダが渡された場合サブフォルダ以下に含まれるファイルも検索して処理するか否か
	
	0	:	サブフォルダ以下は検索しない
	1	:	サブフォルダ以下も検索する


DeletesEmptyFolder :

	空フォルダを削除するか否か
	空フォルダは追加設定や除外設定を行った結果
	空フォルダになったものも含む
	
	0	:	空フォルダを削除しない
	1	:	空フォルダを削除する


UsesRecycleBin :

	元のファイルを削除する際ごみ箱に送るか否か
	
	0	:	削除の際ごみ箱に送らず削除
	1	:	削除の際ごみ箱に送る


RemovesRedundantFolder :

	冗長フォルダを削除するか
	例えば arc.zip の内容が
	arc.zip\folder1\folder2\file1.txt
	arc.zip\folder1\folder2\file2.txt
	で全てであった場合、冗長なフォルダを削除して
	arc.zip\file1.txt
	arc.zip\file2.txt
	のようにするか否か
	
	0	:	冗長フォルダを削除しない
	1	:	冗長フォルダを削除する
	2	:	冗長フォルダを削除する(処理後、書庫ファイル名を冗長フォルダ名に基づくものにする)

	2の場合の処理後の書庫ファイル名は例えば前述の例であれば「folder1.zip」となる


ShowsProgress :

	プログレスダイアログを表示するか否か
	
	0	:	ダイアログを表示しない
	1	:	ダイアログを表示する

	表示を切ると処理にかかる時間が思いの外短縮されます


BatchDecompress :

	一括解凍を行うか否か
	
	0	:	必要なファイルのみ解凍
	1	:	一括解凍

	一括解凍が無効の場合、処理にあたって、書庫の中から最終的に必要なファイルのみを解凍しますが
	一括解凍を有効にすると、一度書庫内の全てのファイル・フォルダを解凍し
	そこから不要なファイルの削除などを行うようになります
	一括解凍の方が解凍の速度的に有利なことが多いと思われますが
	不要なファイルのみが壊れた書庫の解凍に失敗するようになってしまいます
	また、パスワード付きの書庫のパスワード入力に関する処理は各DLLに完全に依存するようになります
	結果としてできあがる書庫に違いはありません


AppendFile :

	処理後残すファイルを正規表現で指定
	(大文字/小文字の区別はされない)
	指定を空にするとこのオプションは無効になる

	例えば
	AppendFile=.*\.jpg|.*\.jpeg
	とすると「.jpg」か「.jpeg」が末尾につくファイルを残す
	
	この指定に該当するファイルから
	除外設定ファイルを除いたものが
	最終的に残るファイルとなる


ExcludeFile :

	処理後取り除くファイルを正規表現で指定
	(大文字/小文字の区別はされない)
	指定を空にするとこのオプションは無効になる
	
	例えば
	ExcludeFile=.*\.exe
	とすると「.exe」が末尾につくファイルを取り除く


CompressLevel :

	圧縮レベルを指定する

	-1	:	通常圧縮
	 0	:	無圧縮
	 1	:	低圧縮
	 9	:	高圧縮

	-1, 1, 0, 9 以外は無効


FileTimeMode :

	ファイルの更新日時の設定

	0	:	変更しない
	1	:	指定の日時にする(FileTimeで指定)


FolderTimeMode :

	フォルダの更新日時の設定

	0	:	変更しない
	1	:	指定の日時にする(FolderTimeで指定)
	2	:	フォルダ内で最新の更新日時を持つファイル・フォルダにあわせる


FileTime :
FolderTime :

	ファイル・フォルダの更新日時の設定
	FileTimeModeやFolderTimeModeオプションが1の場合
	ファイル・フォルダの更新日時がここで指定した日時に変更される

	FileTime=1980/02/21 02:30:12

	のように指定する


FileAttribute :
FolderAttribute :

	ファイル・フォルダの属性の設定
	-1を指定すると属性の変更をしない
	属性は

	読み取り専用		: 1
	隠しファイル		: 2
	システムファイル	: 4
	アーカイブ		: 32

	以上の値の和で指定する

	例えば
	FileAttribute=33
	とすると
	ファイルの属性は「読み取り専用」と「アーカイブ」となる


RemarkableFile :

	注目ファイルを正規表現で指定
	(大文字/小文字の区別はされない)
	注目ファイルがどう扱われるかは
	WarningLevelオプションの説明を参照のこと


WarningLevel :

	警告レベルの設定

	0	:	何もしない

	1	:	書庫内のファイルが全て注目ファイルであった場合
			その旨を知らせ,書庫内のファイル一覧を表示し
			その書庫を処理しない

	2	:	書庫内のファイルに注目ファイルがあった場合
			その旨を知らせ,書庫内のファイル一覧を表示し
			その書庫を処理しない
	
	例えば
	RemarkableFile=.*\.exe
	WarningLevel=1
	とすると
	書庫が「.exe」が末尾につくファイルだけで構成されていた場合その書庫を処理しない

	注目ファイルのチェックは処理前、処理後に行われる


RecyclesIndividualFiles :

	書庫内のファイルを削除する際ごみ箱に送るか否か
	
	0	:	削除の際ごみ箱に送らず削除
	1	:	削除の際ごみ箱に送る

	BatchDecompressオプションが1の場合のみ有効


ExitsImmediately :

	処理後エンターキーの入力を待たずに終了するか否か
	
	0	:	処理後エンターキーの入力を待って終了
	1	:	処理後エンターキーの入力を待たずに終了


PreCheck :

	処理前に、書庫が処理済みかどうかのチェックを行うか否か

	チェックの結果処理済みであると判定された場合は処理を行わない。
	ただし、このチェックは不完全であるため
	処理済みでない書庫を処理済みと判定してしまうことがある。
	
	0	:	書庫が処理済みかどうかのチェックを行わない
	1	:	書庫が処理済みかどうかのチェックを行う

目次へ


アドバイス

「UnifyZip」にて処理を行うと
内容が同じであるのにファイル名が異なっているファイルが見つかるようになるかもしれません。

「UnDup」等のソフトを用いれば
そういったファイル名の異なる同内容のファイルを見つけ削除などを行うことができます。

UnDup
作者		Sim-Gさん
作者ページ	http://simg.infoseek.livedoor.com/


さて、同じファイルを格納してあるはずの書庫がバイナリ的に一致しないのはなぜでしょうか。
冗長なフォルダを含んでいたり、空フォルダがあったり、余計なファイルがあったり
といったことからそうなることはもちろんあるのでしょう。
しかし、そうでなくとも書庫が一致しないケースがあります。
それは、書庫内のファイルの更新日時や属性が異なっているケースです。
書庫ファイルは、中に含まれるファイル・フォルダの更新日時や属性を保持しているため、
中に含まれるファイル・フォルダの更新日時や属性が書庫にしたときに異なっていた場合、
同じ内容のファイル・フォルダであってもそれらをまとめて作った書庫はバイナリ的に一致しません。
良くあるケースは
・格納したフォルダの更新日時が異なっている
・格納したファイルの「アーカイブ」属性が異なっている
などです。
フォルダの更新日時は解凍しただけで変わる可能性があるので
ある書庫を解凍して圧縮しただけでもできた書庫は元の書庫と一致しない事もあり得ます。

ちなみに、初期状態の設定が僕のお薦めの設定です。

目次へ


注意事項

UnifyZip の動作には「7-zip32.dll」等が必要です。
なお、解凍については「7-zip32.dll」等に頼っている関係上
扱えない種類の zip ファイルもあります。
しかし、実際に解凍に失敗するケースとしては
扱えない種類の zip ファイルであるためにそうなるよりも
ファイルが壊れているために失敗するほうが多いと思います。

作者のマシンだとrarファイルを処理した場合
一度 F5 キーを押さないとエクスプローラ上にできあがった zip が表示されません。
同じ現象が起こるようでしたらそのように対処してみてください。

Version 2.18 より UnifyZip 本体で圧縮を行うようになりました。
それに伴い、以前のバージョンで作られたものとは異なる書庫が作成される場合があります。
書庫統一を目的としている以上、こういった変更は避けたかったのですが
統一するならば、自分が正しいと思えるものに統一したいと考え、実行に踏み切りました。
作成される書庫は PKWARE.ZIP File Format Specification に準拠するよう心がけています。
書庫内のファイルの並び順については特に言及されていないようなので
Windows のエクスプローラと同様の基準でソートするようにしています。
「準拠できてないよ」「主流の形式はこうなっている」「そこの解釈は違うのでは」
といった情報がありましたら是非作者まで。

目次へ


著作権

「UnifyZip」の著作権はKurimaが保有しています。
転載・配布は内容に変更を加えない限り自由に行なってください。
雑誌等への掲載につきましては事後でも構いませんのでメールでお知らせください。

e-mail : KurimaKDV@hotmail.com
home page : http://kurima.sakura.ne.jp/

目次へ


免責

このプログラムを使用したことによって生じたいかなる損害も、作者は免責とさせていただきます。
プログラム上にある、いかなるバグ、欠陥も作者はそれを訂正する義務を負いません。

目次へ


サポート

「UnifyZip」に不具合を発見した場合は、ホームページの掲示板に書き込むか下記宛にメールを送ってください。なるべく対処したいと思います。
また、こんな機能を追加してほしい、この機能は要らない、といった意見もどしどしお寄せください。

e-mail : KurimaKDV@hotmail.com
home page : http://kurima.sakura.ne.jp/

目次へ


更新履歴

2005/02/28
 - Version 2.00

2005/03/08
 - Version 2.01 2005/03/09
 - Version 2.02 2005/04/03
 - Version 2.03 2005/04/13
 - Version 2.04 2005/07/03
 - Version 2.05 2005/07/05
 - Version 2.06 2005/07/10
 - Version 2.07 2005/07/15
 - Version 2.08 2005/08/02
 - Version 2.09 2005/08/10
 - Version 2.10 2005/09/25
 - Version 2.11 2005/10/23
 - Version 2.12 2005/10/27
 - Version 2.13 2005/11/09
 - Version 2.14 2005/11/16
 - Version 2.15 2005/11/18
 - Version 2.16 2005/11/29
 - Version 2.17 2006/02/12
 - Version 2.18 2006/02/14
 - Version 2.19 2006/02/19
 - Version 2.20 2006/02/23
 - Version 2.21 2006/03/10
 - Version 2.22 2006/04/12
 - Version 2.23 2007/01/16
 - Version 2.24 2008/01/05
 - Version 2.25 2008/01/07
 - Version 2.26 2014/05/20
 - Version 2.27

目次へ


謝辞

動作テストをし、的確なアドバイスや感想をくれた yusuke氏 にこの場を借りてお礼を申し上げます。

目次へ