以下のコマンドで 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 ファイルが複数含まれているフォルダを対象としてこのスクリプトを実行しました。
スクリプトを実行すると、ZIP ファイルがすべて削除され、展開されたファイルを含むフォルダが ZIP ファイルが存在していたパスに展開されます。
Get-ChildItem の -Filter オプションの指定と ForEach-Object 内の処理を書き換えればサブフォルダ内の任意のファイルに対して様々な操作ができるので、色々と応用が効きそうです。
ちょっとググった限りではピンポイントでニーズを満たすスクリプトが見つからなかったのでブログ記事としてまとめてみました。