こんにちは!今回はバッチファイルとPowerShellを組み合わせて複数のZipファイルをまとめて解凍する方法を紹介していきたいと思います。
Zipファイルはファイルやフォルダを圧縮するフォーマットとして非常に有名な形式の一つです。
一昔前までは、ファイルの圧縮解凍には専用のソフトをインストールする必要がありました。
ですが、今となってはほとんどのOSが標準で解凍する機能を実は持っています。
WindowsでもZipファイルをダブルクリックすると中身をみることができますしね。
ですが、Zipファイルのままではその中身のプログラムを実行したり、それを参照したプログラムなどは実行することが出来ません。
インターネットに接続していないPCや人のモノだったりするとソフトが入れるのも一苦労です。
そんな時に役立つ標準機能を使ったファイルの解凍方法として今回の方法を使ってみてはいかがでしょうか?
やりたいこと
Zipファイルが1つくらいであれば、「右クリック」して「すべて展開」でもよいと思います。そんなに難しいことでもありませんしね。
ですが、ファイルが大量にある場合、一つ一つするのはとてもめんどうですよね?10個を超えるともうしんどいです。
そんなときは下記のコードをコピーしてバッチを作ってみてください。
スクリプト例
@echo off
cd /d %~dp0
dir /b /s *.zip>%~dp0zips.txt
for /f %%a in (%~dp0zips.txt) do (
powershell -command "Expand-Archive -Path %%a -DestinationPath %%~na"
)
使い方
1.Zipファイルを一つのフォルダにまとめる
2.そのフォルダの中に先ほど作成したバッチファイルを入れる
3.バッチファイルをダブルクリックで実行する
すると、同じフォルダ内に解凍されたファイルが出来上がります!
解説
Zipファイルのリストをテキストに取得
①「dir /b /s *.zip>%~dp0zips.txt」
このコマンドで、作成したバッチと同じフォルダにある拡張子zipのファイル名一覧を、同じフォルダの「zips.txt」ファイルに出力しています。
「dir」コマンドについては、以下ページで詳細に解説しています。よかったら参考にしてみてください。
テキストファイルのファイルリストを一個ずつ解凍コマンドに受け渡す
②「for /f %%a in ('%~dp0zips.txt') do ( powershell -command "Expand-Archive -Path %%a -DestinationPath %%~na" )」
上記の①で作成した「ZIPファイルのファイル名一覧」のテキストファイルから1行ずつ読み込み、PowerShellのファイルを解凍(展開)するコマンド「Expand-Archive」で解凍(展開)しています。
あとがき
今回は、PowerShellの「Expand-Archive」を使った複数のZipファイルの解凍方法について紹介させていただきました。
ネットで調べてみるとたくさん「ZIP」をまとめて解凍できるソフトはダウンロードできると思います。個人で使用する場合はそういったソフトを使用するほうが断然楽ですね。
ソフトをインストールする手間や、ネットワークに接続することの安全性の確保は業務でパソコンをいじる人にとっては死活問題だったりします。また、会社の貸与PCのため、ソフトを勝手にインストールできないけどZIPファイルが大量にある!場合もあるでしょう。
ですが、この方法の真骨頂は、「コマンドでZIPを解凍したい」といった時ですね。
バッチやパワーシェルでこれができると、ファイルのバックアップやファイルのコピーなどを行う時に容量を抑えられますね。
何かのお役に立てれば幸いです。
コメント