检查一个Zip文件是否有密码保护

3
我正在使用PowerShell提取多个ZIP文件。其中一些文件有密码保护。要求是跳过受密码保护的文件。当此代码遇到受密码保护的文件时,它会显示一个框以输入密码。有没有办法在提取ZIP文件之前检查它是否受密码保护?我也尝试了DotNetZip,但无法找到确定文件是否受密码保护的方法。
$shell = new-object -com shell.application
$zip = $shell.NameSpace("C:\ZipFile.zip")
foreach ($item in $zip.items()) {
  $shell.Namespace("C:\ExtractedFiles").copyhere($item)
}

更新:

我能够使用DotNetZip检测加密文件。如果能够不使用DotNetZip来做到这一点,将会更好。

[System.Reflection.Assembly]::LoadFrom("C:\Ionic.Zip.dll") 
$zipfile = [Ionic.Zip.ZipFile]::Read($file.FullName) 
$encFlag = $false
foreach ($file in $zipfile) {
  if ($file.UsesEncryption -eq $true) {
    $encFlag = $True
  }
}
Write-Host "Enctryption: " $encFlag
1个回答

2
您可以将NOERRORUI标志指定为第二个参数传递给CopyHere方法:CopyHere。请注意保留HTML标签。
$shell = new-object -com shell.application
$zip = $shell.NameSpace("C:\ZipFile.zip")
foreach ($item in $zip.items()) {
  $shell.Namespace("C:\ExtractedFiles").copyhere($item, 1024)
}

这将会默默地跳过密码保护的zip文件的内容。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接