Изменяя найденный здесь ответ, этот фрагмент скрипта PowerShell должен делать то, что вы хотите. Просто сохраните его как файл с расширением ".ps1". При вызове, просто назовите его как ./filename.ps1, и он извлечет файлы в отдельные папки, удалит zip-файлы и удалит все файлы с расширением .pdf. Я не проверял, правильно ли он работает с рекурсивными путями, но стоит проверить его.
Изменить: Если вы не хотите, чтобы ваши zip-файлы были удалены, удалите или закомментируйте (#) строкуrmdir -Path $_.FullName -Force
Требования: PowerShell, 7-Zip и для вас, чтобы установить 7-Zip путь в файле.
param([string]$folderPath="D:\Blah\files") Get-ChildItem $folderPath -recurse | %{ if($_.Name -match "^*.`.zip$") { $parent="$(Split-Path $_.FullName -Parent)"; write-host "Extracting $($_.FullName) to $parent" $arguments=@("e", "`"$($_.FullName)`"", "-o`"$($parent)\$($_.BaseName)`""); $ex = start-process -FilePath "`"C:\Program Files\7-Zip\7z.exe`"" -ArgumentList $arguments -wait -PassThru; if( $ex.ExitCode -eq 0) { write-host "Extraction successful, deleting $($_.FullName)" rmdir -Path $_.FullName -Force $arguments1="$($parent)\$($_.BaseName)\*.pdf" rmdir -Recurse -Path $arguments1 } } }