圧縮、解凍の作業を7zipを使って自動化する方法を紹介します。
作業回数が多いと、ドラッグ・アンド・ドロップや同じコマンドを毎回実行するのは手間です。
ソフト開発をする仕事柄、特定ファイルを解凍したり、圧縮する作業が多く、ドラッグ・アンド・ドロップで目的の作業を簡単に実行したくなります。
7zipのコマンドをbatファイルに書いておくことで、圧縮・解凍作業を自動化します。
- 7zipの使い方
- 7zipとバッチファイルで自動化する方法
7zipとは
7zipとは解凍・圧縮ツールです。
このツールの便利なところは、コマンドラインで解凍・圧縮することができる点です。
バッチファイルでも実施できるので、自動化に向いています。
ZIPファイルの中の特定のファイルを取り出すなどの自動化が可能です。
以下からダウンロード可能です。
使い方
自動化をするために、バッチファイルでも使用できるコマンドラインでの使用方法を中心に解説します。
オプション一覧
コマンド | 説明 |
---|---|
a | zipファイルにファイル/フォルダを追加 |
d | zipファイルから指定ファイルを削除 |
e | zipファイルを解凍 |
x | zipファイルを階層含めて解凍 |
l | zipファイル内のファイルの一覧 |
rn | zipファイル内のファイル名をリネーム |
t | zipファイルの整合性をテストする |
u | zipファイルの更新 |
公式サイトに説明があります。
解凍
eとxの違い
eとxコマンドは、どちらも解凍コマンドですが、フォルダの階層を復元するかどうかが異なります。
eコマンドはzipファイルの中が階層の場合でも、全て回答するフォルダ内の直下に回答します。
xコマンドはzipファイルの中が階層の場合は、その階層構造を維持して解凍します。
従来の解凍と同じ階層を維持するxコマンドを使うほうが無難です。
zipファイルの階層構造
sample
├─A
│ └─aa.txt
└─B
└─bb.txt
eコマンドで解凍するとすべて同一階層に回答されます。また、フォルダのA,Bの中身は空になり、元々A、Bフォルダの中身は、同一階層に回答されます。
eコマンドで解凍した場合
A
B
aa.txt
bb.txt
xコマンドで解凍すると、zipファイルの階層構造を維持して解凍してくれます。
sample
├─A
│ └─aa.txt
└─B
└─bb.txt
特定のファイルを解凍
zipファイルをすべて解凍すると時間もかかる上に、容量も圧迫します。
特定ファイルだけ解凍できれば、解答時間も短縮できる上に容量も抑えることができます。
zipファイル内に複数階層ある時に、xmlファイルのみ解凍したい場合は以下のようにします。
“C:\Program Files\7-Zip\7z.exe” x -y -o出力パス -ir!*.xml foo.zip
ファイルの指定は複数可能です。
xmlファイル以外にもtxtファイルも同時に回答できます。
“C:\Program Files\7-Zip\7z.exe” x -y -o出力パス -ir!*.xml -ir!*.txt foo.zip
- x
-
zipファイルを階層含めて解凍
- -y
-
同名ファイルの上書きの質問などに対してすべて「はい」と回答する
- -o
-
出力ディレクトリの指定
- -i
-
ファイル名とワイルドカードを指定
- -r
-
サブディレクトリに対して再帰処理を実施
- !
-
ワイルドカード 「!*.xml」でXMLファイルすべてを意味する。
圧縮
「a」コマンドで圧縮が可能です。
.zipは任意の名前を指定します。次にフォルダを指定します。
“C:\Program Files\7-Zip\7z.exe” a ○○.zip subdir\
サブディレクトリを含む特定のファイルのみの圧縮も可能です。
-rは再帰的に処理することを意味します。
つまり、複数階層あってもすべてのtxtファイルを圧縮します。
“C:\Program Files\7-Zip\7z.exe” a ○○.zip *.txt -r
パスワード付きで圧縮
「-p」でパスワード付きで圧縮できます。以下のように”foo”とパスワードを付けることができます。
“C:\Program Files\7-Zip\7z.exe” a ○○.zip -pfoo
自動化
バッチファイルを使用した自動化について紹介します。
解凍、圧縮のいずれでもバッチファイルで実行できます。
zipと同階層に特定ファイルのみ解凍
これで、zipと同階層に特定ファイルが解凍されます。
rem 第1引数に指定されたらzipファイルがあるディレクトリに移動
cd %~dp1
rem zipファイルからxmlファイルのみを解凍し、zipファイルのディレクトリに解凍。
“C:\Program Files\7-Zip\7z.exe” x -y -o”%~dp1″ -ir!*.xml “%1”
コメント