PowerShellでZIPファイルを簡単解凍!Expand-Archiveコマンドの使い方を徹底解説

PowerShellは、Windows環境での作業を効率化する強力なツールです。その中でも、ZIPファイルの解凍に使える「Expand-Archive」コマンドは、ファイル操作をスクリプトで自動化したい方にとって非常に便利なコマンドです。
GUIでの解凍操作は直感的ですが、大量のファイルや定期的な処理では手間がかかります。そんなときこそ、PowerShellの出番です。この記事では「Expand-Archive」の基本的な使い方から応用テクニックまで、初心者にもわかりやすく丁寧に解説します。ぜひ、日常業務の自動化や効率化に役立ててください。


Expand-Archiveとは?

Expand-Archiveは、PowerShellでZIPファイルを展開(解凍)するためのコマンドレットです。Windows PowerShell 5.0以降に標準搭載されており、追加のソフトウェアをインストールすることなく使用できます。

このコマンドは、Windowsに内蔵されている「Microsoft.PowerShell.Archive」モジュールの一部であり、圧縮されたアーカイブファイル(主に.zip)を、指定したディレクトリに解凍する機能を提供します。

基本構文は以下のとおりです。

Expand-Archive -Path <ZIPファイルのパス> -DestinationPath <展開先フォルダ>

基本的な使い方

例:ZIPファイルを解凍する

たとえば、C:\Temp\sample.zipというファイルをC:\Temp\unzippedに解凍したい場合、以下のように記述します。

Expand-Archive -Path "C:\Temp\sample.zip" -DestinationPath "C:\Temp\unzipped"

このコマンドを実行すると、ZIPファイル内の内容が指定したフォルダに展開されます。

フォルダが存在しない場合

-DestinationPathで指定したフォルダが存在しない場合、自動でフォルダが作成されます。つまり、あらかじめディレクトリを用意しておく必要はありません。


上書き展開をしたい場合

既に展開先のフォルダに同名のファイルやフォルダが存在する場合、通常はエラーになります。
このようなときは、-Forceパラメータを追加することで、既存ファイルを上書きして展開することができます。

Expand-Archive -Path "C:\Temp\sample.zip" -DestinationPath "C:\Temp\unzipped" -Force

ワイルドカードは使える?

Expand-Archiveは、-Pathパラメータにワイルドカード(*など)をサポートしていません。複数のZIPファイルを一括で展開したい場合は、Get-ChildItemForEach-Objectを組み合わせる必要があります。

例:フォルダ内のすべてのZIPファイルを一括解凍する

Get-ChildItem "C:\Temp\zips" -Filter *.zip | ForEach-Object {
$dest = "C:\Temp\unzipped\$($_.BaseName)"
Expand-Archive -Path $_.FullName -DestinationPath $dest -Force
}

このスクリプトでは、C:\Temp\zips内のすべてのZIPファイルを、それぞれのファイル名ごとに別フォルダに展開します。


展開後の確認をするには

展開が成功したかを確認するためには、以下のように対象ディレクトリの内容を表示させるとよいでしょう。

Get-ChildItem -Path "C:\Temp\unzipped"

あるいは、Test-Pathでフォルダやファイルの存在確認を行うこともできます。

Test-Path "C:\Temp\unzipped\readme.txt"

注意点とトラブルシューティング

ファイルが壊れている場合

ZIPファイルが壊れていると、Expand-Archiveは例外を返します。このような場合、Try-Catchでエラー処理を加えておくとスクリプトが中断しません。

try {
Expand-Archive -Path "C:\Temp\sample.zip" -DestinationPath "C:\Temp\unzipped"
} catch {
Write-Error "解凍に失敗しました: $_"
}

ZIP以外のファイル形式には非対応

Expand-Archive.zipファイル専用です。.rar.7zなどの他の圧縮形式には対応していません。他形式を解凍したい場合は、7-ZipのCLIなどを使う必要があります。


スクリプトに組み込む応用例

毎日決まった時間にZIPファイルを解凍する

Windowsタスクスケジューラと組み合わせれば、毎日特定のフォルダに格納されたZIPファイルを自動で解凍する仕組みも作れます。

例として、以下のスクリプトを .ps1 ファイルとして保存します。

$today = Get-Date -Format "yyyyMMdd"
$zipFile = "C:\Backup\$today.zip"
$destFolder = "C:\Backup\unzipped\$today"

if (Test-Path $zipFile) {
Expand-Archive -Path $zipFile -DestinationPath $destFolder -Force
}

このスクリプトをスケジューラで毎日実行すれば、日付ごとのZIPファイルを自動で展開できます。


まとめ

Expand-Archiveコマンドは、PowerShellでZIPファイルを簡単に展開できる便利なツールです。基本的な使い方はシンプルで、初心者にもすぐに扱える点が魅力です。
上書き展開や一括処理、スケジューラとの連携など、応用方法も多く、業務効率化には欠かせません。

PowerShellの力を活用して、ファイル管理の自動化や定型処理をスマートにこなしていきましょう。

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