我的电脑桌面上有个带密码的压缩包, 我想使用下面的代码解压出里面的文件,
有个问题就是, 如果判断压缩包带不带密码?
如果带密码: 则弹出输入框输入密码, 直到输入正确的密码再解压, 或者不想解压了,点取消按钮取消操作,
如果不带密码: 直接解压
下面的代码, 输入两次密码后解压出了文件, 但文件都是0k的大小, 求路过大佬指导- cls
- Add-Type -AssemblyName Microsoft.VisualBasic
-
-
- function Unzip-File {
- param(
- [string]$ZipFile,
- [string]$ExtractFolder
- )
- [string]$PathTo7Zip = "C:\Program Files\7-Zip\7z.exe"
-
- # 如果文件存在并且不是一个目录,则执行以下操作
- if (Test-Path -Path $ZipFile -PathType Leaf) {
- # 如果文件有密码,则要求用户输入密码,直到密码正确为止
- do {
- $Password = [Microsoft.VisualBasic.Interaction]::InputBox("请输入密码", "解压缩文件", "", 0, 0)
-
- if ([string]::IsNullOrEmpty($Password)) {
- # 如果用户取消了输入,则退出循环
- exit
- }
-
- $ErrorActionPreference = 'SilentlyContinue'
- & $PathTo7Zip x $ZipFile "-o$ExtractFolder" "-p$($Password | ConvertTo-SecureString -AsPlainText -Force)"
- $IsCorrect = $? # 检查是否出现错误
- $ErrorActionPreference = 'Continue'
- } while (!$IsCorrect)
- } else {
- Write-Host "找不到指定的文件。"
- }
- }
-
- # 调用函数来解压缩文件
- $ZipFile = "$env:USERPROFILE\Desktop\test.zip" # 压缩包路径
- $ExtractFolder = "$env:USERPROFILE\Desktop\test" # 解压缩路径
-
- Unzip-File -ZipFile $ZipFile -ExtractFolder $ExtractFolder
复制代码
|