SmartZip 大概能被普通人使用的 7-zip 扩展脚本?

功能介绍

  • 智能解压
    • 单文件时解压至当前文件夹
    • 多文件时解压到当前文件夹下的某个文件夹
    • 压缩包包含密码时,遍历设置的密码,密码正确解压,不正确提示手动输入密码并解压
      • 自带两个密码,上次使用的密码,剪贴板复制的内容(移除了首尾空格和换行)
      • 如不想添加可以直接复制密码然后运行智能解压
      • 自动新增使用过的密码 2.20+
      • 动态排序密码 2.20+
    • 解压完成后按照指定规则处理压缩后的文件,如重命名,删除
    • 解压嵌套压缩包
      • 文件后缀名符合ini-ext,extExp 规则则解压
      • 嵌套压缩包解压后会删除
  • 智能打开
    • 如果是压缩包则打开,如果不是则显示添加到压缩包界面
  • 压缩
    • 全是文件夹则每个文件夹生成一个压缩包, 否则生成单个压缩包

设置方式

  • 直接运行 SmartZip.exe 会显示设置界面 3.0+
  • 建议清空所有 password rename delete 然后按照需求添加
  • 可批量从txt或旧版本ini设置中导入密码 3.0+
  • 更多自定义请直接编辑ini,参考以下链接设置,后续可能不再更新ini文档

运行方式

  • 如果启用了右键,可在资源管理器中右键文件使用
    • 右键实现方式不完美
      • 由于右键菜单单次只能传递一个文件,传递多文件过于复杂
      • 目前方法为在当前窗口发送 复制(Ctrl+C) 快捷键,可能会扰乱剪贴板
      • 右键菜单有15个文件限制,解除限制访问下方链接按说明操作
  • 右键发送到菜单 2.14+
    • 不影响剪贴板
    • 不受15个文件限制影响
    • 如使用资源管理器可用此代替
    • 缺点是在二级目录里
  • 通过直接传递参数运行(推荐但比较繁杂)
    • 智能解压: SmartZip.exe x file1 file2 file3 ....
    • 使用7-zip打开: SmartZip.exe o file1
    • 压缩: SmartZip.exe a file1 file2 file3 ....
  • Directory Opus 示例
    • 智能解压: SmartZip.exe x {allfilepath}
    • 使用7-zip打开: SmartZip.exe o {allfilepath}
    • 压缩: SmartZip.exe a {allfilepath}
  • Contextmenu.exe 传递参数或直接运行
    • 它会在运行时执行复制,然后将其传给主脚本执行
    • 选中文件然后以快捷键或其他方法调用Contextmenu.exe
    • 无参时默认智能解压
    • 智能解压: Contextmenu.exe x
    • 使用7-zip打开: Contextmenu.exe o
    • 压缩: Contextmenu.exe a
  • 直接运行 SmartZip.exe 然后拖拽文件到界面上会触发智能解压 3.0+
  • 拖拽文件到 SmartZip.exe 上会触发智能解压

提示

  • 更新版本建议备份 ini以防出错

预览图

  • 设置界面

set

  • 资源管理器右键界面

3

  • 批量解压界面

unZip

  • 批量压缩界面

addZip

下载

4 个赞

用脚本的话,还是使用7z.dll更智能、自由,也更快。

没有办法知道当前状态
假如解压出错就卡住了
我上面的显示原始界面就是为了防止万一7zip出错了能有个办法解决

它也是带界面的。
20220613194007

1 个赞

加油,看好你哦

其实就是虽然这个是工作于7zip
但真正与7zip相关的代码很少…
我并不需要去了解7zip是怎么实现的.
我大概看了一下你说的这个
如果要完成那几乎每一步都要让我自己去实现
重做一个7zip?

目前就像api一样吧.
我只管调用…能有返回值就行…
甚至界面我都不需要去管,我只读取然后复刻就行

我github中有个everything的相关SDK…
我的看法就是…不大行,遇见毛病得折腾半天,现在还有几个小毛病放在那管不了

搜索this.7z
只有15处相关.
所以此脚本只有不到10个地方调用了7zip

它虽然是DLL,使用的却是7Z.exe的语法。
我重新包装了dll,只有三四个函数,获取文件列表/解压到目录/解压到内存。

1 个赞

其实只要实现了就好
遍历密码这种事情本身就是个费时的事
目前的规则都不能说完美
偶尔还会有出错的时候

错误不频繁我都不管的,只有频繁遇见某个错误我才会去测试
此脚本有日志功能,每步都有耗时
[命令行正确] [47ms] [20220613201423]
短的像这种
长的可能耗时1秒钟了…
但如果耗时1秒钟不用我去输入密码我觉得我还是能接受的.

1 个赞

我依旧在等一个仿WinRAR的前端

可能我们的需求不同吧,我倒没在意过界面/密码之类的问题,99%场景,都是追求快速无碍。

一个手势过去,获取文件列表20毫秒,解压100多毫秒,基本上200毫秒内完成。当然那种数十G的压缩包,还是要老实用系统菜单。

我更多使用的是解压本身,比如下载文件到内存,再解压到内存,再用文件列表去碰撞规则,实现某些软件的自动更新等等。

如果我认为事情本身是件耗时的事
我就不会过度去关注它的耗时
只会关注事情能否完成
这种事情有很多

比方说下载,比方说转换文件,比方说我发过视频剪切合并
解压我认为也是属于这种

能快则快嘛。通常百M内的解压时间都会比双击进入一个目录的用时快吧

由于深度依赖命令行
既然是依赖命令行能不能做给bandizip 的版本呢 毕竟界面好看而且还有下拉选择密码菜单
image

它是付费的
6.*版本没有这个

额不是有那个啥么。。。。。

更新了新版本,推荐更新,主要是2.0刚出来没多久有一些小毛病

  1. 实现更新新版本时在ini中自动写入选项
    由于注释不能用此方法更新,以后会提供 ini说明.txt
  2. 粗略写了一下MD说明
  3. 新增
    3.1 新增测试日志cmdLog
    3.2 新增隐藏界面无干扰运行,hideRunSize
    3.3 新增多个文件的嵌套解压 muiltNesting
    3.4 日志新增行号
    3.5 让新建压缩包自动重命名
    3.6 让 hideRunSize 工作于压缩
    3.7 为 exe 生成信息
    3.8 移除压缩的 -aou 参数,参数无效,已经用其他方法替代
  4. 修复
    4.1 修复出现重复密码
    4.2 修复解压成功判断
    4.3 修复写入日志时的冲突
    4.4 修复检测时冲突
    4.5 修复日志等级
  5. 测试
    5.1 不显示托盘图标(托盘图标无用且有干扰)
    5.2 暂时注释掉打开压缩包时的错误检查
1 个赞

感谢青蛙大大的推荐…

我在想到底要不要在 releases 中添加一个版本集成 7zip
以去除百度云的下载,频繁打包很烦
主要顾虑是这会不会 license 相关的问题
7zip源代码 license 是 GNU
exe license好像也是这样
exe相关的

我不太懂这方面的…

1 个赞


这图里2个问题 一个是每个压缩包都要输入密码 密码是一样9个包
一个是 这个界面白了吧唧的是 卡到bug了嘛 大佬

界面白了就是因为它要输密码了…
你输完密码应该就不白了…

至于为什么9个同样的包都要输密码…
你在ini文件里搜索 lastPass
看看是不是你输的这个…
如果不是就代表错了…

顺便说下在这输入密码不会添加到密码列表
你可以尝试复制密码再试一下

如果不行把出错的压缩包百度共享 私信给我链接和密码我测试一下

昨天发这个白的时候还不是最新版 更新完最新版没问题了