繁体   English   中英

通过Powershell从zip中提取某个文件似乎不会查看子文件夹

[英]Extract a certain file from zip via Powershell seems like not to look in sub folders

我是Powershell的新手,尤其是Powershell和ZIP文件。 我想从传递的zip文件中解压缩一个特定的文件。 为此,我有以下代码。 下面的代码应该从zip获得*.update

我遇到的问题是特定文件在另一个文件夹中。 运行脚本时,它似乎不会在zip文件夹中查找更多文件。

我已经在$ item上尝试了GetFolder,并且/或者通过$ item尝试了foreach。 到目前为止没有成功。 任何人都有想法或指导的方向?

function ExtractFromZip ($File, $Destination) {
    $ShellApp = new-object -com shell.application
    $zipFile = $ShellApp.NameSpace($File)
    foreach($item in $zipFile.Items())
    {
        Write-Host $item.Name

        if ($item.GetFolder -ne $Null) {
            Write-Host "test"
        }

        if ($item.Name -like "*.update") {
            $ShellApp.Namespace($Destination).copyhere($item)
            break;    
        }
    }
}

以下是如何在较新版本的Powershell中本地执行此操作:

Add-Type -Assembly System.IO.Compression.FileSystem
$zip = [IO.Compression.ZipFile]::OpenRead($sourceFile)
$zip.Entries | where {$_.Name -like '*.update'} | foreach {[System.IO.Compression.ZipFileExtensions]::ExtractToFile($_, "C:\temp\test", $true)}
$zip.Dispose()

使用下面的脚本解决了它:

Add-Type -Path 'C:\dev\Libraries\DotNetZip\Ionic.Zip.dll'

$zip = [Ionic.Zip.ZIPFile]::Read($sourceFile)
foreach ($file in $zip.Entries) {    
if ($file -like "*.update") {
        $zip | %{$file.Extract("C:\temp\test", [Ionic.Zip.ExtractExistingFileAction]::OverWriteSilently)}
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM