2016年3月10日木曜日

7-Zipをコマンドラインで使って圧縮ファイル作成

7-Zipで圧縮ファイル作成


Windowsはエクスプローラで右クリックからzip作成ならできるのに、コマンドライン(コマンドプロンプト)で使うコマンドはなさそうですね。バッチファイルでzip作成したいとき困ります。

そこでどうすればいいか探してみました。
7-Zipが使えそうです。

7zipのコマンドラインバージョンをこちらからダウンロード
https://sevenzip.osdn.jp/download.html

適当にPathを通すか、絶対パスで起動します。

単純にフォルダをzipに固めたいだけならこんな感じ。

7za.exe a output.zip inputFolder

出力ファイルの拡張子を7zに変えれば7-Zip形式で出力されます。
出力が2GB超えると普通のzipでは対応できないらしいので、その可能性がある場合はこちら。

7za.exe a output.7z inputFolder

複数のフォルダをまとめたい


ここまでは少し調べればすぐ見つかると思いますが、複数のフォルダを1つのフォルダにまとめてからzipを作成したいケースがあって少々悩みました。

普通にコピーして1つのフォルダにまとめてから上記の方法で圧縮すればいいのですが、後処理の都合でまとめたフォルダを元に戻したい状況です。

たとえば下記のような構成の2つのフォルダがあったとします。

  • folder1/subfolder1
  • folder1/subfolder2
  • folder2/subfolder3
  • folder2/subfolder4

これらをまとめて、zip内にサブフォルダをフラットに含めたいのです。
  • subfolder1
  • subfolder2
  • subfolder3
  • subfolder4
それでどうしたかというと、7zaのaオプションは既存のzipファイルに追加もできるようなので、
  1. cd folder1
  2. 7za a ..\output.zip *
  3. cd ..\folder2
  4. 7za a ..\output.zip *
これでとりあえずoutput.zipにフラットにサブフォルダが含まれるようになりました。

0 件のコメント:

コメントを投稿