我正在使用 PowerShell 提取多个 ZIP 文件。其中一些文件受密码保护。要求是跳过受密码保护的文件。当此代码遇到受密码保护的文件时,它会显示一个输入密码的框。有什么方法可以在解压 ZIP 文件之前检查它是否受密码保护吗?我试过点网压缩 http://dotnetzip.codeplex.com/也是如此,但无法找到确定文件是否受密码保护的方法。
$shell = new-object -com shell.application
$zip = $shell.NameSpace("C:\ZipFile.zip")
foreach ($item in $zip.items()) {
$shell.Namespace("C:\ExtractedFiles").copyhere($item)
}
Update:
我能够使用 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
您可以指定 NOERRORUI 标志作为第二个参数CopyHere https://msdn.microsoft.com/en-us/library/windows/desktop/bb787866%28v=vs.85%29.aspx method:
$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 文件的内容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)