7-Zipのコマンドライン操作

スポンサーリンク

とっても便利かつオープンソースでフリーな圧縮・解凍ソフトのひとつに「7-Zip」というものがあります。
名前の通りzipファイルを圧縮・解凍できたり、独自形式7zとして圧縮・解凍できたりします。

7-Zip公式サイトはこちら

圧縮・解凍ソフト 7-Zip
圧縮・解凍ソフト7-Zipは、7z、ZIP、RAR、LZH、ISO、TAR、DMG、MSIなど、さまざまなデータフォーマットに1つで対応している世界的にデファクトのフリーソフトウェアです。AES256による暗号化(パスワード圧縮および解凍)...

Win64bit版ダウンロードリンクはこちら(2024/5/7現在)

ところで、この7-Zip、本来はGUIアプリなのですが、実はコマンドラインツールとして使うこともできます。
コマンドプロンプトに

"C:\Program Files-Zipz.exe"

と打ち込むことで起動します。環境変数PATHを通していると(後述)、「7z」と打つだけでも起動できます。

スポンサーリンク

環境変数PATHに7-Zipを追加

これはお好みですが、便利なので追加しましょう。方法はWindows7とWindows10で若干違うみたいですが、どっちも通用する方法を紹介します。

まず、エクスプローラーを開いて、左側のメニューにある「PC」を右クリックし、「プロパティ」を選択します。

「システム」というウィンドウが開くので、「システムの詳細設定」をクリックします。

「システムのプロパティ」ウィンドウが開くので、「環境変数」をクリックします。

「環境変数」ウィンドウが開くので、「システム環境変数」内の「Path」をクリックし、「編集」をクリックして、”C:\Program Files\7-Zip\”を加えてください。

私の環境では、次のようになっていました。
C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;%SystemRoot%\system32~~~~略~~~~C:\Program Files (x86)\QuickTime\QTSystem\
このように、様々なアドレスが、コロン;で挟まれています。
これの最後尾にC:\Program Files\7-Zip\を加えて、
C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;%SystemRoot%\system32~~~~略~~~~C:\Program Files (x86)\QuickTime\QTSystem\;C:\Program Files\7-Zip\
こんな感じにします。

以下では、

"C:\Program Files-Zipz.exe" [コマンド]

と打ち込む部分を、Pathを通している前提で、

7z [コマンド]

としています。もしPathを通さないのであれば、適宜書き換えてください。

圧縮コマンド

基本的な圧縮の使い方は、

7z a [圧縮した後の名前] [圧縮したいものの名前]

になります。圧縮するには”a”(addという意味らしい)というオプションが必要になっています。
たとえば、sample.txtを、archive.zipに圧縮したければ、

7z a archive.zip sample.txt

となります。

もちろん、複数ファイルを一つの圧縮ファイルにすることもできます。

sample1.txt、sample2.txt、sample3.txtを、archive.zipに圧縮したければ、

7z a archive.zip sample1.txt sample2.txt sample3.txt

となります。sample.txtの部分がディレクトリでも問題なくフォルダごと圧縮してくれます。

さらに、すでに存在する圧縮ファイル(zip等)に、ファイルを追加したいときもこのコマンドは使えます。

7z a archive.zip add.txt

オプション

いくつかのオプションを紹介します。

-mmt=on :マルチスレッド化
-mx=9:圧縮率(大きいほど高圧縮。9が最大)
-ssw:他のアプリが使用中のファイルも圧縮(使い方によれば危険ですが、)
-t[形式]:圧縮ファイルの形式を指定します。gzipならば-tgzip、xzならば-txzとなります。
-sdel :圧縮が終わったら、もとのファイルは消すというオプションです。

これらのコマンドを活用して、「指定フォルダ以下の全ファイルを、xzファイルに圧縮」というbatファイルを書いてみました。

@echo off
pause

SET EXCLUDE_FILE_EXT=.xz
SET SRC_DIR="L:\"

rem for /f %%i in (%SRC_DIR%\*) do (
for /f "usebackq" %%i in (`dir /B /S "%SRC_DIR%"`) do (

    if /I not "%%~xi"=="%EXCLUDE_FILE_EXT%" "C:\Program Files-Zipz.exe" a -mmt=on -mx=9 -ssw -txz -sdel %%i.xz %%i

)

pause

解凍コマンド

もちろん、解凍も行えます。基本的な使い方は、

7z e [解凍したいものの名前]

または

7z x [解凍したいものの名前]

です。xとeの違いは、

x:フォルダ構成を再現して解凍
e:ぜんぶその場所(同じ場所)に解凍

です。目的に応じて使ってください。

これを利用して、「指定フォルダ以下にある全てのgzファイルを解凍し、もとのファイルは削除」というbatファイルを作りました。

@echo off
pause

SET EXCLUDE_FILE_EXT=.gz
SET SRC_DIR="L:\"

rem for /f %%i in (%SRC_DIR%\*) do (
for /f "usebackq" %%i in (`dir /B /S "%SRC_DIR%"`) do (

    if /I "%%~xi"=="%EXCLUDE_FILE_EXT%" "C:\Program Files-Zipz.exe" e -mmt=on -mx=9 -ssw -tgzip %%i -o%%~dpi && del %%i
    
)

pause

batファイルは自己責任で使ってください。

コメント

タイトルとURLをコピーしました