我正在尝试实现一个我在那里嵌套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文件夹..
答案 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
}