「バッチファイルで再圧縮」

注意:この記事の内容は 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 に


使った技術の詳細については、以下の日記が参考になるかもしれません。


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