我试图解压缩压缩文件。我已经编写了如下代码
function Unzip($sourceZip, $destination) {
$shell = new-object -com shell.application
$zip = $shell.NameSpace($sourceZip)
$dest = $shell.NameSpace($destination)
foreach($item in $zip.items())
{
$dest.Copyhere($item, 0x14)
}
}
我在输入的zip文件中调用此脚本,该文件包含大约14K文件,如下所示
Unzip "Source.zip" "Destination"
此文件卡住超过30分钟。但仍然没有进展。
从我发现它在此行$zip.items()
可能需要很长时间才能发现所有文件。
有没有更好的,最佳的方法呢?
提前致谢。问候,Ganesh。
答案 0 :(得分:2)
您可以使用System.IO.Compression(需要.net 4.5)来执行此操作:
[System.Reflection.Assembly]::LoadWithPartialName('System.IO.Compression.FileSystem')
[System.IO.Compression.ZipFile]::ExtractToDirectory($sourceZip, $destination)
答案 1 :(得分:0)
你可以安装类似7zip的东西,它有命令行工具来做这类事情,但我不知道有更好的本地方式。
答案 2 :(得分:0)
[CmdletBinding()]
param(
[string]
$Source,
[string]
$Destination
)
Write-Verbose "Loading System.IO.Compression.FileSystem Assembly"
[System.Reflection.Assembly]::LoadWithPartialName('System.IO.Compression.FileSystem')
Write-Verbose "Unpacking $Source to $Destination"
[System.IO.Compression.ZipFile]::ExtractToDirectory($Source, $Destination)
但它需要.net4.5 +