Powershell, выписка-архив и подкаталоги - PullRequest
0 голосов
/ 07 апреля 2020

Есть ли способ, которым я могу использовать экстракт-архив Powershell для извлечения подпапки из zip-файла?

Например, у меня есть zip-файл с именем a.zip. Внутри этого zip находится папка с именем a, а внутри этой папки - папка с именем b, в которой находится куча файлов. Я хочу извлечь папку b, например, C:\SomeFolder так, чтобы конечная структура была C:\SomeFolder\b, а не C:\SomeFolder\a\b

1 Ответ

0 голосов
/ 07 апреля 2020

К сожалению, это невозможно с Expand-Archive. Я рекомендую использовать 7zip, если это возможно. Вот как это сделать без использования внешних команд, таких как 7zip.

using namespace System.IO.Compression
Add-Type -AssemblyName System.IO.Compression.FileSystem

$zipPath = "C:\a.zip"
$destDirPath = "C:\SomeFolder"
$targetEntry = "a/b/"

$zip = [ZipFile]::OpenRead($zipPath)
$zip.Entries.Where{ $_.FullName -match "$targetEntry.*[^/]$" }.ForEach{
    $newFile = [IO.FileInfo]($destDirPath,$_.FullName -join "/")
    $newFile.Directory.Create()
    [ZipFileExtensions]::ExtractToFile($_, $newFile)
}
$zip.Dispose()
...