Powershell解压缩包含大量文件的zip文件

时间:2015-04-01 10:28:58

标签: powershell unzip

我试图解压缩压缩文件。我已经编写了如下代码

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。

3 个答案:

答案 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 +