Как распаковать файл в Powershell?



у меня есть .zip файл и нужно распаковать все его содержимое с помощью Powershell. Я делаю это, но это не работает:



$shell = New-Object -ComObject shell.application
$zip = $shell.NameSpace("C:a.zip")
MkDir("C:a")
foreach ($item in $zip.items()) {
$shell.Namespace("C:a").CopyHere($item)
}


Что случилось? Каталог C:a по-прежнему пуст.

692   5  

5 ответов:

вот простой способ с помощью ExtractToDirectory из System.IO.Compression. ZipFile:

Add-Type -AssemblyName System.IO.Compression.FileSystem
function Unzip
{
    param([string]$zipfile, [string]$outpath)

    [System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath)
}

Unzip "C:\a.zip" "C:\a"

обратите внимание, что если целевая папка не существует, ExtractToDirectory создаст ее.

как сжимать и извлекать файлы

в PowerShell v5+ есть команда развернуть-архив (а также Compress-архив) встроенный:

Expand-Archive c:\a.zip -DestinationPath c:\a

PowerShell v5.1 кажется, что это немного отличается от v5. В соответствии с документом MS он должен иметь параметр-Path, чтобы указать путь к архивному файлу.

Expand-Archive -Path Draft.Zip -DestinationPath C:\Reference

или же это может быть реальный путь как ниже

Expand-Archive -Path c:\Download\Draft.Zip -DestinationPath C:\Reference

Развернуть-Архив Doc

Эй его работа для меня..

$shell = New-Object -ComObject shell.application
$zip = $shell.NameSpace("put ur zip file path here")
foreach ($item in $zip.items()) {
  $shell.Namespace("destination where files need to unzip").CopyHere($item)
}

используя expand-archive но автоматическое создание каталогов, названных в честь архива:

function unzip ($file) {
    $dirname = (Get-Item $file).Basename
    New-Item -Force -ItemType directory -Path $dirname
    expand-archive $file -OutputPath $dirname -ShowProgress
}

Comments

    Ничего не найдено.