如何解压缩多个zip文件夹

时间:2017-11-21 12:50:22

标签: powershell powershell-v2.0 powershell-v3.0 powershell-v4.0

我正在尝试实现一个我在那里嵌套zip文件的要求。我需要通过单击解压缩所有这些。为此,我有一个代码,它只适用于一个压缩文件夹,需要扩展它。下面是我需要扩展的代码:

Add-Type -AssemblyName System.IO.Compression.FileSystem
function Unzip
{
param([string]$zipfile, [string]$outpath)
[System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath)
}
Unzip "E:\Softwares\PS\AllFiles.zip" "E:\Softwares\PS\AllFiles"

任何人都可以建议我扩展它以解压缩嵌套的zip文件夹..

1 个答案:

答案 0 :(得分:0)

你的问题不是很详细。我通过在C:\ temp \ ziptest上有一个文件来玩一点,我放了多个嵌套的zip文件,这很有效。请注意,可能需要考虑更多的变量(即zip文件有密码,是标准的zip文件还是.7z等)。

Add-Type -AssemblyName System.IO.Compression.FileSystem
function Unzip
{
  param([string]$zipfile, [string]$outpath)
  [System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath)
}



$flag = $true
while($flag)
{
 $zipFiles = Get-ChildItem -Path "C:\temp\ziptest" -Recurse | Where-Object {$_.Name -like "*.zip"}

 if($zipFiles.count -eq 0)
 {
    $flag = $false
 }

 elseif($zipFiles.count -gt 0)
 {
    foreach($zipFile in $zipFiles)
    {
     #create the new name without .zip
     $newName = $zipFile.FullName.Replace(".zip", "")

     Unzip $zipFile.FullName $newName

     #remove zip file after unzipping so it doesn't repeat 
     Remove-Item $zipFile.FullName   
    }
 }
 Clear-Variable zipFiles
}