Add-Type -A System.IO.Compression.FileSystem
[IO.Compression.ZipFile]::CreateFromDirectory('foo', 'foo.zip')
[IO.Compression.ZipFile]::ExtractToDirectory('foo.zip', 'bar')
我找到了通过PowerShell从answer创建和提取.zip文件的代码,但由于我声誉不佳,我不能问一个问题作为对该答案的评论。
mir
函数一样。)答案 0 :(得分:16)
PowerShell具有内置的.zip
实用程序,无需在版本5及更高版本中使用.NET类方法。 Compress-Archive
-Path
参数也采用string[]
类型,因此您可以将多个文件夹/文件压缩到目标zip中。
<强>正在压缩:强>
Compress-Archive -Path C:\Foo -DestinationPath C:\Foo.zip -CompressionLevel Optimal -Force
还有一个-Update
开关。
<强>解链强>
Expand-Archive -Path C:\Foo.zip -DestinationPath C:\Foo -Force
答案 1 :(得分:3)
5之前的PowerShell版本可以执行this script
function Unzip($zipfile, $outdir)
{
Add-Type -AssemblyName System.IO.Compression.FileSystem
$archive = [System.IO.Compression.ZipFile]::OpenRead($zipfile)
foreach ($entry in $archive.Entries)
{
$entryTargetFilePath = [System.IO.Path]::Combine($outdir, $entry.FullName)
$entryDir = [System.IO.Path]::GetDirectoryName($entryTargetFilePath)
#Ensure the directory of the archive entry exists
if(!(Test-Path $entryDir )){
New-Item -ItemType Directory -Path $entryDir | Out-Null
}
#If the entry is not a directory entry, then extract entry
if(!$entryTargetFilePath.EndsWith("\")){
[System.IO.Compression.ZipFileExtensions]::ExtractToFile($entry, $entryTargetFilePath, $true);
}
}
}
Unzip -zipfile "$zip" -outdir "$dir"