无人小站

7-ZipPasswordExt 加密压缩包解压脚本

JP-Liu 7-ZipBATDouble CommanderExtractNowSmartZip

7-ZipPasswordExt 加密压缩包解压脚本

今年年初的时候曾介绍过 ExtractNow 这个能自动测试密码能否正常解压的小工具,但在实际使用中发现,ExtractNow 无法正常处理部分中文命名的文件,几个月后在小众软件见到介绍 SmartZip 这个类似功能工具的文章,但个人又用不上这么多功能,于是一时兴起,写了个简单的脚本给 Double Commander 调用。

脚本主要功能

脚本的功能很简单,接收从 Double Commander 中传入的参数,调用 7z.exe 按密码库的顺序一个一个密码尝试解压传入的压缩包,直到以下情况发生:

  1. 文件成功解压。
  2. 密码尝试次数超过配置的密码总数(即密码库中无匹配密码),此时脚本会提示输入文件解压密码,输入后继续解压,但是需要注意,此时输入的密码并不会登记入密码库。

脚本内容

@echo off
chcp 65001
setlocal enabledelayedexpansion

::7z.exe 的路径
set zipper=%~dp07z.exe

set tempfilelist=%1
set workingpath=%2

::密码总数
set pwcount=10

::密码库(每行一个)
set pw1=123456
set pw2=
set pw3=
set pw4=
set pw5=
set pw6=
set pw7=
set pw8=
set pw9=
set pw10=

set num=1
:CheckPassword
set pwtest=!pw%num%!
if "%pwtest%" == "" goto :NumADD
%zipper% t -p%pwtest% "%tempfilelist%"
if %errorlevel% == 0 goto :Right
cls

:NumADD
set /a num=%num%+1
if %num% LEQ %pwcount% goto :CheckPassword

set /p pwtest=未匹配到密码,可手工输入(回车直接退出):
if %pwtest%=="" Exit

:Right
%zipper% x -p%pwtest% "%tempfilelist%" -o"%workingpath%" -y
exit

Double Commander 配置

由于 Double Commander 的工具栏按钮支持调用各种各样的工具,于是 7-ZipPasswordExt 我也用工具栏按钮配置。

7-ZipPasswordExt按钮配置

  • Icon:工具栏按钮图标。
  • Tooltips:工具栏按钮文本提示。
  • Command:命令,这里写 7-ZipPasswordExt 脚本的路径。
  • Parameters:参数,根据自身需要填写,比如:
    • %ps %Ds\%os 解压到压缩文件的同名文件夹。
    • %ps %Ds 解压到当前文件夹。
  • Start path:起始路径。

实际效果

7-ZipPasswordExt 实际效果

JP-Liu
懒人一个