「バッチファイルで再圧縮」
注意:この記事の内容は WindowXP で検証しました。他のバージョンでは違う結果になるかもしれません。
- 本を解体してスキャンしたものは無圧縮ZIPにすると扱いやすいなー
- JPGファイルは元から圧縮されてるようなもんだから無圧縮ZIPで十分さー
- ビューアはZIP書庫をそのまま扱えるMangaMeeyaなんかがお勧めー
- 拡張子をオリジナルのCBZにして関連付ければダブルクリックで開けるー
- バッチファイルはテキストファイルだから簡単に書けて良いなー
- バッチファイルはドラッグアンドドロップでリネームとかできて便利ー
- ドラッグ&ドロップするだけでフォルダを個別圧縮してくれたらなー
- RARやLZHのファイルを解凍してZIPに再圧縮してくれたら尚更グッドー
……そんなこんなで作ってみました。フォルダや、ZIP・RAR・LZHのファイルをCBZにするためのバッチファイル。
ダウンロード: CBZ圧縮++.zip (564kb)
コマンドラインから使える7z.exe(7-Zip)を同梱しているので、そのまま使えます。細かい仕様などは以下の通りです。
- ZIPファイル → 拡張子を cbz に
- フォルダ → 無圧縮ZIP → 拡張子を cbz に
- RARファイル → 解凍 → 無圧縮ZIP → 拡張子を cbz に
- LZHファイル → 解凍 → 無圧縮ZIP → 拡張子を cbz に
使った技術の詳細については、以下の日記が参考になるかもしれません。
- 2009-11-23 - 火蛾の灯樹 「バッチファイルの基本」
- 2009-11-24 - 火蛾の灯樹 「バッチファイルを最小化して起動」
- 2009-11-25 - 火蛾の灯樹 「バッチファイルの限界」
CBZ圧縮++.batの全文も載せておきます。
::ZIPファイルはCBZにリネーム(CBZ: ComicBookZip) ::フォルダは無圧縮ZIPにしてCBZにリネーム(元ファイルは削除) ::RAR・LZHファイルは解凍して フォルダと同様にCBZファイルにする @ECHO OFF ::以下の三行で、バッチファイル自身を最小化した状態で起動できる ::詳細については→ http://d.hatena.ne.jp/firedfly/20091124#p1 if not "%~0"=="%~dp0.\%~nx0" ( start /min cmd /c,"%~dp0.\%~nx0" %* & goto :eof ) ::ファイルサイズがゼロならフォルダなので 7z.exe で圧縮 ::フォルダでない場合はリネーム過程へ :LOOP IF NOT %~z1==0 GOTO FILE_RENAME "%~dp0\7-Zip\7z.exe" a -tzip -mx=0 "%~dpn1.cbz" "%~1" ::圧縮に成功して、拡張子 cbz の無圧縮ZIPができていれば ::元々のフォルダとその中身は削除する IF NOT EXIST "%~dpn1.cbz" GOTO ERROR RMDIR /Q/S "%~dpn1" ::zipファイルがD&Dされた場合は拡張子を cbz に変える ::二つあるのはファイル名が .jpg.zip だったりした場合用 :FILE_RENAME IF EXIST "%~dpnx1.zip" REN "%~dpnx1.zip" "%~nx1.cbz" IF EXIST "%~dpn1.zip" REN "%~dpn1.zip" "%~n1.cbz" ::lzhファイル・rarファイルだった場合は 7z.eze で解凍 ::でもって無圧縮ZIPにした後に、元ファイルは削除 IF EXIST "%~dpn1.lzh" ( "%~dp0\7-Zip\7z.exe" x -tlzh -o"%~dpn1" "%~dpn1.lzh" "%~dp0\7-Zip\7z.exe" a -tzip -mx=0 "%~dpn1.cbz" "%~dpn1" RMDIR /Q/S "%~dpn1" DEL "%~dpn1.lzh" ) IF EXIST "%~dpn1.rar" ( "%~dp0\7-Zip\7z.exe" x -trar -o"%~dpn1" "%~dpn1.rar" "%~dp0\7-Zip\7z.exe" a -tzip -mx=0 "%~dpn1.cbz" "%~dpn1" RMDIR /Q/S "%~dpn1" DEL "%~dpn1.rar" ) ::複数ファイルをD&Dされたときには ::一つずつ全てが終わるまでループ :ERROR SHIFT /1 IF EXIST %1 GOTO LOOP