~書庫統一~
Kurima様が作成されたUnifyZip Version 2.27を
ひらめが開発環境をVisual Studio 2017へ変更し、UNICODE対応を行った物です。
GitHubにて公開、配布しています。
https://tekkui.github.io/unifyzip/
https://github.com/tekkui/unifyzip/releases
zip(7z, lzh, rar)ファイルに対して
Windows XP, 7, 8, 10
※動作には「7-zip32.dll」が必要です。
7-zip32.dll
作者 秋田 稔 さん
作者ページ http://akky.xrea.jp
また「UNLHA32.DLL」があればLHA形式のファイルも扱えます。
(ただし、処理後のファイルはzip形式となります)
UNLHA32.DLL
作者 Micco さん
作者ページ http://micco.mars.jp/micindex.html
加えて「unrar32.dll」があればRAR形式のファイルも扱えます。
(ただし、処理後のファイルはzip形式となります)
unrar32.dll
作者 亀井 哲弥 さん
統合アーカイバ http://www.madobe.net/archiver/lib/unrar32.html
なお unrar32.dll の動作には unrar.dll が必要です。
unrar.dll
作者 Eugene Roshal さん
作者ページ http://www.rarlab.com
さらに「UNZIP32.DLL」があれば「7-zip32.dll」で扱えない形式のZIPファイルを扱えることがあります。
UNZIP32.DLL
作者 shoda T. さん
作者ページ http://www.csdinc.co.jp/
「nkf32.dll」があれば文字コード変換が行えます。
nkf32.dll
作者 市川 至 さん、The nkf Project.
作者ページ https://ja.osdn.net/projects/nkf/
(以下の3つは全て同じフォルダにいれてください)
UnifyZip.exe
・・・アプリケーション本体
UnifyZip.ini
・・・設定ファイル
index.html
・・・本ファイル
インストールは適当なフォルダへアーカイブファイルに含まれる全てのファイルを入れてください。
アーカイブの内容については「構成ファイル」の項を参照してください。
アンインストールは、そのフォルダとその中の全てのファイルを削除してください。
レジストリは一切操作していません。
処理を行いたいzip(7z, lzh, rar)ファイルまたは
処理を行いたいzip(7z, lzh, rar)ファイルが含まれるフォルダを
UnifyZip.exeにエクスプローラなどからドラッグアンドドロップすると
コマンドプロンプトが現れて処理が開始されます。
コマンドプロンプトには実行のログが出力されます。
複数のファイルやフォルダをドラッグアンドドロップすることもできますが
あまり多くのファイルを渡すとエラーが出ます。
(恐らくWindowsの仕様による制限)
フォルダが渡された場合はそのフォルダ内のファイルを処理します。
各種設定は「UnifyZip.ini」を編集することで行います。
詳しくは「オプション」の項を参照してください。
PriorityClass :
プロセスの優先度を指定
値 | 優先度 |
---|---|
0 | 通常 |
1 | 低 |
2 | 高 |
3 | リアルタイム |
4 | 通常以下 |
5 | 通常以上 |
値 | サブフォルダ以下 |
---|---|
0 | 検索しない |
1 | 検索する |
値 | 空フォルダ |
---|---|
0 | 削除しない |
1 | 削除する |
値 | 削除の際ごみ箱に |
---|---|
0 | 送らず削除 |
1 | 送る |
値 | 冗長フォルダ |
---|---|
0 | 削除しない |
1 | 削除する |
2 | 削除する (処理後、書庫ファイル名を冗長フォルダ名に基づくものにする) |
値 | ダイアログ |
---|---|
0 | 表示しない |
1 | 表示する |
値 | 解凍 |
---|---|
0 | 必要なファイルのみ |
1 | 一括 |
値 | 圧縮率 |
---|---|
-1 | 通常圧縮 |
0 | 無圧縮 |
1 | 低圧縮 |
9 | 高圧縮 |
値 | ファイルの更新日時 |
---|---|
0 | 変更しない |
1 | 指定の日時にする(FileTimeで指定) |
値 | フォルダの更新日時 |
---|---|
0 | 変更しない |
1 | 指定の日時にする(FolderTimeで指定) |
2 | フォルダ内で最新の更新日時を持つファイル・フォルダにあわせる |
属性 | 値 |
---|---|
読み取り専用 | 1 |
隠しファイル | 2 |
システムファイル | 4 |
アーカイブ | 32 |
値 | 動作 |
---|---|
0 | 何もしない |
1 | 書庫内のファイルが全て注目ファイルであった場合 その旨を知らせ,書庫内のファイル一覧を表示し その書庫を処理しない |
2 | 書庫内のファイルに注目ファイルがあった場合 その旨を知らせ,書庫内のファイル一覧を表示し その書庫を処理しない |
値 | 削除の際ごみ箱に |
---|---|
0 | 送らず削除 |
1 | 送る |
値 | 処理後エンターキーの入力 |
---|---|
0 | 待って終了 |
1 | 待たずに終了 |
値 | 書庫が処理済みかどうかのチェック |
---|---|
0 | 行わない |
1 | 行う |
値 | 暗号化されたファイル |
---|---|
0 | 無視しない |
1 | 無視する |
値 | ZIP書庫 |
---|---|
0 | 7-zip32.dllで作成する |
1 | 本体で作成する |
値 | 処理結果 |
---|---|
0 | コンソールに表示するか |
1 | ファイルに出力する |
値 | 文字コード |
---|---|
0 | 変換しない |
1 | 変換する |
値 | 圧縮ファイルを |
---|---|
0 | 元ファイルと同じフォルダに作成する |
1 | Tempフォルダに作成して、完成後にコピーする |
値 | 書庫のテスト |
---|---|
0 | 行わない |
1 | 行う |
「UnifyZip」にて処理を行うと
内容が同じであるのにファイル名が異なっているファイルが見つかるようになるかもしれません。
「UnDup」等のソフトを用いれば
そういったファイル名の異なる同内容のファイルを見つけ削除などを行うことができます。
UnDup
作者 Sim-Gさん
作者ページ http://hp.vector.co.jp/authors/VA032597/
さて、同じファイルを格納してあるはずの書庫がバイナリ的に一致しないのはなぜでしょうか。
冗長なフォルダを含んでいたり、空フォルダがあったり、余計なファイルがあったり
といったことからそうなることはもちろんあるのでしょう。
しかし、そうでなくとも書庫が一致しないケースがあります。
それは、書庫内のファイルの更新日時や属性が異なっているケースです。
書庫ファイルは、中に含まれるファイル・フォルダの更新日時や属性を保持しているため、
中に含まれるファイル・フォルダの更新日時や属性が書庫にしたときに異なっていた場合、
同じ内容のファイル・フォルダであってもそれらをまとめて作った書庫はバイナリ的に一致しません。
良くあるケースは
・格納したフォルダの更新日時が異なっている
・格納したファイルの「アーカイブ」属性が異なっている
などです。
フォルダの更新日時は解凍しただけで変わる可能性があるので
ある書庫を解凍して圧縮しただけでもできた書庫は元の書庫と一致しない事もあり得ます。
ちなみに、初期状態の設定が僕のお薦めの設定です。
UnifyZip の動作には「7-zip32.dll」等が必要です。
なお、解凍については「7-zip32.dll」等に頼っている関係上
扱えない種類の zip ファイルもあります。
しかし、実際に解凍に失敗するケースとしては
扱えない種類の zip ファイルであるためにそうなるよりも
ファイルが壊れているために失敗するほうが多いと思います。
作者のマシンだとrarファイルを処理した場合
一度 F5 キーを押さないとエクスプローラ上にできあがった zip が表示されません。
同じ現象が起こるようでしたらそのように対処してみてください。
Version 2.18 より UnifyZip 本体で圧縮を行うようになりました。
それに伴い、以前のバージョンで作られたものとは異なる書庫が作成される場合があります。
書庫統一を目的としている以上、こういった変更は避けたかったのですが
統一するならば、自分が正しいと思えるものに統一したいと考え、実行に踏み切りました。
作成される書庫は PKWARE の .ZIP File Format
Specification に準拠するよう心がけています。
書庫内のファイルの並び順については特に言及されていないようなので
Windows のエクスプローラと同様の基準でソートするようにしています。
「準拠できてないよ」「主流の形式はこうなっている」「そこの解釈は違うのでは」
といった情報がありましたら是非作者まで。
Version 2.28 より UNICODEに対応しました。
設定ファイル(UnifyZip.ini)のエンコードをUTF-16 LE(BOM有り)に変更しています。
古いまま(Shift_JIS)でも動作しますが、一部の機能が制限されます。
取り除くファイルの正規表現などにUNICODE文字が指定できない為です。
UNICODE系で不具合が発生した場合には、7-zip32.dllで圧縮を行うように設定ファイル変更して下さい。
改善する可能性があります。
コンソールへの結果出力で文字化けしている事がありますが
プログラムからは正常に出力しています。
コンソールではフォントリンクが動作していないと推測されます。
設定でファイル出力に切り替える事で、文字化け無く結果を確認できます。
7-zip32.dllで展開できないZIP書庫をUNZIP32.DLLで展開を行いますが
UNZIP32.DLLはUNICODEに対応していない為に、正常に処理できないことがあります。
nkf(Network Kanji Filter)を使用した
書庫名や書庫内のフォルダ、ファイル名の文字コード変換に対応しました。
オプションの変更にも対応していますが制約があり、入力はUTF-8またはUTF8-MAC、出力はUTF-16LEを指定して下さい。
CompressWithTemporaryFolder=1とする事で
TempフォルダがRAMドライブなどの高速なドライブであれば処理が速くなる事があります。
ただし、最大で書庫の展開サイズの2倍を必要とするので注意してください。
ZIP64には対応していませんが、7-zip32.dllはZIP64に対応しているので同DLLで処理をしている部分は動作します。
7-zip32.dllで圧縮を行うように設定ファイル変更する事で、一部の機能(書庫が処理済みなど)は動作しませんが
展開、再圧縮は行えます。
Windows10 Anniversary Update(1067)以降で有効化できる長いパスには対応していません。
「UnifyZip」の著作権はKurimaが保有しています。
転載・配布は内容に変更を加えない限り自由に行なってください。
雑誌等への掲載につきましては事後でも構いませんのでメールでお知らせください。
e-mail : KurimaKDV@hotmail.com
home page : http://kurima.sakura.ne.jp/
Version 2.28 の UNICODE対応はひらめが行っています。
e-mail : tekkui@outlook.jp
このプログラムを使用したことによって生じたいかなる損害も、作者は免責とさせていただきます。
プログラム上にある、いかなるバグ、欠陥も作者はそれを訂正する義務を負いません。
「UnifyZip」に不具合を発見した場合は、ホームページの掲示板に書き込むか下記宛にメールを送ってください。なるべく対処したいと思います。
また、こんな機能を追加してほしい、この機能は要らない、といった意見もどしどしお寄せください。
e-mail : KurimaKDV@hotmail.com
home page : http://kurima.sakura.ne.jp/
UNICODE版の不具合などはGitのIssues、もしくはひらめへメールを送って下さい。
Git issues : https://github.com/tekkui/unifyzip/issues
e-mail : tekkui@outlook.jp
Windows 10 Professional 64bit 1809
Visual Studio 2017 Community 15.9.11
及び、Appveyor
Windows XP Service Pack 3
Windows 7 Service Pack 1
Windows 8.1
Windows 10 1809
2005/02/28
- Version 2.00