Powershellスクリプトを用いると、Windowsのバッチファイルでは処理できなかったZIP圧縮や解凍を行うことができます。
今回は、ある特定のファイルやフォルダに対してZIP圧縮及び解凍を実現するPowershellスクリプトを紹介したいと思います。
Powershellスクリプトの概要や作り方、実行の仕方については以下の記事を参考にしてみてください。
Compress-Archive -Path [圧縮する対象のパス] -DestinationPath [出力ZIPファイルのパス] -Force
Compress-Archiveコマンドで圧縮することができます。「-Force」を付けた場合、同一の名前のZIPファイルが既にあっても上書きします(「-Force」を付けない場合、フォルダに同一の名前のZIPファイルがある場合、エラーが出ます)。
Expand-Archive -Path [解凍するZIPファイルのパス] -DestinationPath [解凍先のパス] -Force
.一方、解凍する場合は上記のExpand-Archiveコマンドで解凍ができます。
実際にサンプルとなるスクリプトを見ていきましょう。
以下のようにカレントディレクトリにimagesというフォルダを用意し、imageの中に3枚のJPGファイルを入れました。このimagesフォルダをPowershellスクリプトで圧縮してみます。
以下のスクリプトで圧縮→解凍ができます。
1行目で「images\*」と指定することで、imagesフォルダの中の全てのファイルを指定することができます。出力先は「imagesCompressed.zip」としました。
2行目では、1行目で圧縮され生成された「imagesCompressed.zip」を解凍します。解凍先のフォルダは「imagesExpanded」フォルダです。
Compress-Archive -Path images\* -DestinationPath imagesCompressed.zip -Force
Expand-Archive -Path imagesCompressed.zip -DestinationPath imagesExpanded -Force
pause
上記のスクリプトを実行すると、以下のように「imagesCompressed.zip」が生成され、それを解凍した「imagesExpanded」フォルダも生成されており、正常に処理されることが確認できました。
1つのフォルダを圧縮する際に、わざわざPowershellで実施する必要はないと思いますが、例えば以下のコマンドを用いることでjpg形式のファイルだけZIP化するなど、細かいことも実現できるようになります。
Compress-Archive -Path images\*.jpg -DestinationPath imagesCompressed.zip -Force
また、多数のフォルダをそれぞれ別々のzipファイルにしたい際などには、スクリプトを使って自動化すると便利なことがあるかもしれません。