本日はWindowsのバッチファイルで、ファイルやフォルダのZIP圧縮と解凍を行う方法を紹介します。
実は、Windowsのバッチファイル自体にはファイルやフォルダの圧縮や解凍を行うコマンドはありません。
最近コマンドプロンプトに代わり、より多機能なシェルとしてWindowsに標準搭載されているPowershellを使うことで、ファイルの圧縮や解凍を行うことができます。
しかし、Powershellのコマンドをバッチファイルの中に記述して実行させることが可能なので、これを使えばバッチファイル内の記述のみでZIPファイルの圧縮及び解凍を実現できます。
今回はこのコマンドを紹介したいと思います。
以下のコマンドを用いることで、バッチファイルを叩いたフォルダと同じ位置にある「testfolder」フォルダをZIP圧縮し、「output.zip」という名前で生成することができます。
実際に使う際には「testfolder」と記述されている箇所を、圧縮したいフォルダ名 or ファイル名に変更して使ってください。
@echo off
set pShellCommand=powershell -NoProfile -ExecutionPolicy Unrestricted Compress-Archive -Path testfolder -DestinationPath output.zip -Force
%pShellCommand%
「-Path」の後に圧縮したいフォルダやファイル名を、「-DestinationPath」の後に出力されるZIPファイルの名前を入力します。
最後の「-Force」は、同名のZIPファイルが既にある場合でも強制的に上書きするためのコマンドとなります。
逆にバッチファイルでZIPの解凍を行うコマンドを紹介します。
以下のように記述することで「output.zip」を解凍して、解凍した中身を「output」に出力することができます。
@echo off
set pShellCommand=powershell -NoProfile -ExecutionPolicy Unrestricted Expand-Archive -Path output.zip -DestinationPath output -Force
%pShellCommand%
「-Path」の後に解凍したいファイルの名前を、「-DestinationPath」の後に出力先のフォルダの名前を記述します。
最後の「-Force」は、同名のファイルがある場合でも上書きして解凍します。
このように、Powershellを組み合わせることでファイルの圧縮や解凍もバッチファイルから実現することができるようになります。