如何使用PowerShell解压缩文件和子文件

时间:2014-09-16 14:49:27

标签: powershell

我正在尝试解压缩一个文件,这个文件里面还有3个文件也是压缩文件。我想将它们全部解压缩到一个文件夹中。我有解压缩脚本,我从我的主脚本调用。 我的主要脚本如下

$localPath = 'C:\Projects\Deployments\'
$latestDir = $(get-childitem $localPath | sort lastwritetime | select -Last 1).FullName
$Unzip = 'C:\Projects\unzip'
.\unzip.ps1 $latestDir $Unzip 



    $src = $unzip + "\"
    #The below two zip file are contained within 1 more main zip file which is called package
    $TabletzipPath = $Unzip +  "tablet-webdeploy-3.0.zip"
    $AdminzipPath =  $Unzip +  "admin-webdeploy-3.0.zip"


    $Date = Get-Date
    $folder_date = $Date.ToString("yyyy-MM-dd_HHmm")
    $tempPath = 'C:\_Temp' + $folder_date
    if (!(Test-Path -path $tempPath)) 
    {
        New-Item $tempPath -type directory
    }   

    .\unzip.ps1 $TabletzipPath $tempPath
    .\unzip.ps1 $AdminzipPath $tempPath

我的解压缩文件如下

function Expand-ZIPFile($file, $destination)
{
$shell = new-object -com shell.application
$zip = $shell.NameSpace($file)
foreach($item in $zip.items())
{
    $shell.Namespace($destination).copyhere($item)
}
}

Expand-ZIPFile -File $args[0] -Destination $args[1]

1 个答案:

答案 0 :(得分:0)

zip文件的内容在函数变量$ zip.items()中公开。您可以过滤它以查找以.zip结尾的任何内容,将其添加到数组然后在主解压缩完成后,如果数组存在,您可以使用它继续解压缩。您可以通过点源来将函数调用到当前作用域中以查看变量。

($Zip.items()) | select -expand name | ? {$_ -like "*.zip"}

或者,您可以随时完成脚本,扫描提取目录以查找以.zip结尾的内容,然后在找到任何内容时对其进行处理。