我正在尝试解压缩一个文件,这个文件里面还有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]
答案 0 :(得分:0)
zip文件的内容在函数变量$ zip.items()中公开。您可以过滤它以查找以.zip结尾的任何内容,将其添加到数组然后在主解压缩完成后,如果数组存在,您可以使用它继续解压缩。您可以通过点源来将函数调用到当前作用域中以查看变量。
($Zip.items()) | select -expand name | ? {$_ -like "*.zip"}
或者,您可以随时完成脚本,扫描提取目录以查找以.zip结尾的内容,然后在找到任何内容时对其进行处理。