All Articles

PowerShell でサブフォルダを含むフォルダ内のすべての ZIP ファイルを展開する

以下のコマンドで PowerShell でサブフォルダを含むフォルダ内のすべての ZIP ファイルを展開することができます。

Get-ChildItem -Path '<Folder Path>' -Recurse -Filter *.zip | ForEach-Object {
    $destination = "$($_.DirectoryName)\$($_.BaseName)"
    Expand-Archive -Path $_.FullName -DestinationPath $destination -Force
    Remove-Item -Path $_.FullName       
}

実際に、サブフォルダ内に ZIP ファイルが複数含まれているフォルダを対象としてこのスクリプトを実行しました。

image-20240108002832628

スクリプトを実行すると、ZIP ファイルがすべて削除され、展開されたファイルを含むフォルダが ZIP ファイルが存在していたパスに展開されます。

image-20240108003115345

Get-ChildItem の -Filter オプションの指定と ForEach-Object 内の処理を書き換えればサブフォルダ内の任意のファイルに対して様々な操作ができるので、色々と応用が効きそうです。

ちょっとググった限りではピンポイントでニーズを満たすスクリプトが見つからなかったのでブログ記事としてまとめてみました。