Как распаковать файл в 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 по-прежнему пуст.
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
Эй его работа для меня..
$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