7-Zipの再圧縮スクリプトを作ってみた

2021年4月2日

はじめに

今回もマレーシアネタでなくても申し訳ございません。
年末年始のデータ整理の際に「7-Zip」での再圧縮スクリプトを作ってみたので公開したいと思います。

「7-Zip」ってとても便利ですが、皆さんはこんなことはありませんか?

  • 圧縮したファイルの圧縮率を変更したい。
  • 元々パスワード無しで圧縮していたが、パスワード設定したい。
  • 設定したパスワードを変更したい。

実は「7-Zip」自体にその機能が無いので、スクリプトを作成しないといけないんです。
ということで、今回はフォルダ内のファイル全てを再圧縮するというスクリプトです。

スクリプト

下記をメモ帳にコピーして、「7zip-resize.bat」などの名前にして保存するだけです。

@echo off
set MYDIR=%~dp0
set WKDIR="D:\tmp\"
set ZIP_PATH="C:\Program Files\7-Zip\7z.exe"
set PASS="XXXXXXXX"

for %%i in (*.7z) do ( 
    %ZIP_PATH% x -y -p%PASS% -o%WKDIR%%%~ni %%i
    del /q %%i
    %ZIP_PATH% a -t7z -mx=9 -m0=lzma2 -r -mhe=on -ssw -p%PASS% -sdel %%~ni.7z %WKDIR%%%~ni\*.*
    rmdir /s /q %WKDIR%%%~ni
)
PAUSE

以下の項目は自分の環境に合わせて変更してください。

項目設定値
WKDIR一時的に圧縮ファイルを解凍するフォルダ。
ZIP_PATH「7-Zip」のプログラムのパス。
PASS設定するパスワード

またサンプルでは、以下のオプション設定をしています。必要に応じて調整してください。

オプション意味
-mx=9圧縮レベルが9
-m0=lzma2最優先でlzma2形式で圧縮
-mhe=onファイル名も暗号化
-p%PASS%パスワード設定
-rサブフォルダも含める
-sdel圧縮後に元のファイルを削除する
-ssw他のアプリが使用中のファイルも圧縮する。

使い方は、7Zipが入っているフォルダで実行するだけです。
プログラムは、フォルダ内の全ての7Zipを再圧縮を開始します。(サブフォルダを除く)

まとめ

いかがだったでしょうか?もし良かったら使ってもらえるとうれしいです。
またもっと良いプログラムの書き方もあると思うので、ご指摘があればTwitterで教えてください。

IT

Posted by スングル