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

新版增加了 自动新增密码的密码 autoAddPass
复制密码然后智能解压,如果密码正确就会添加到密码列表中
至于如何记住密码已经在密码列表中而不用每次去复制…
这个有待解决

由于自动新增密码,所以可能导致检测速度过慢
添加了 dynamicPassSort 选项
用来排序密码,使最常用的排在最前面
但如果密码太多可能检测速度会过慢
这时候可能就要去ini中去清除password列表中末尾的部分了(使用次数最小)

结合这两项大概能不用再去手动添加密码了…
大部分经常逛的网站就那么几个
常用密码应该也差不多就那么些
但这两项可能会影响速度
所以默认未启用,需手动设置其为1启用

有点像之前小众推荐过的一个

此脚本原来发过一次原型

当时就提到了UZIP
当时的评论是 界面非常漂亮,但是不能传入路径自动解压

后续发现还有些问题
只支持指定格式
不知道解压进度等等.
规则只有一个
解压要耗两倍时间(你可以用它测试下压缩大文件…)
…

不过我还是从它那学到了测试的方法
我这脚本干的其实是苦力活…
我自己把规则一个个收集
一个个测试
勉强做到快速判断
7z的测试基本上就是把文件解压一遍
所以 UZIP 会耗两倍时间(它是等待测试完成判断结果)
就这上面还有人觉得exe太慢了要调用dll…
其实耗时根本不在dll或exe上(差距大概0-100ms)
而是要在测试过程中中断测试并准确返回结果…
中断测试和完整测试的差距大概是(0ms-几小时(超大文件)…)

其实同类型的软件我大部分都用过
还有解他妈的压
还有ExtractNow

ExtractNow大概是最快的(加上我这个)
但它还是有一些缺点
比方说它的格式限制死了(好像)
某些类型可能不支持
再加上它的解压信息也只有进度,没有其他

1 个赞

我只是提醒你dll也使用命令行语法,使用方法一样,我是好意吧,你怎么说得我像在抱怨
我们90%以上的情况下都是解压无密码的小文件,这时exe就比dll慢1/3或者更多,这才是真正重要的使用场景吧。
而且就算解压大文件10秒,dll只快了50毫秒,但这也是快啊。成本是一点点节省出来的。
exe偶尔鼠标会变漏斗,而dll永远不会。只这一点,dll比exe慢100我都用dll

你那是无密码的
我这是必需要测试密码的

不用测试密码我直接解压不就行了
用什么命令行

说的再多不如分享出来

你标题是"7-zip 扩展脚本",我也是围绕着这个标题作的回复。什么时候"密码"成了前置条件了?
我说的是非密码条件下的意见,所以呢?“我这是必需要测试密码的”,不讨论密码就滚出?

“不用测试密码我直接解压不就行了”,我好奇你怎么个直接解压法
“说的再多不如分享出来”,所以我分享我的概念是在对牛弹琴是吧

你告诉我
不测试是否包含密码怎么完成这一步
我功能就是这个
你跟我说不用测试密码?

  • 压缩包包含密码时,遍历设置的密码,密码正确解压,不正确提示手动输入密码并解压

我真是没力气给你争辩。
使用密码的前提不应该是"是否需要密码"吗?
检测下呗,几毫秒的事。
只有两个结果,1,需要,这是你说的复杂场景。2,不需要,这是我说的快速场景。
这说不通吗?

[命令行正确] [430] [31ms] [2022/6/18 3:9:34]
所以这不就是在做这件事吗
31ms
要多快?

你不要把自己说晕了。
我说的是"无密码",我怎么知道它是无密码的?当然是要测试它是否需要密码,这难理解?

我这一步就是测试它是否包含密码
[命令行正确] [430] [31ms] [2022/6/18 3:9:34]

我当然会在测试密码前检查是否包含密码
检查密码正确肯定没这么快

至于为什么我说不要在意几ms的差别
你猜运行一个空脚本要多久
100+ms
在ahk中讲究这几ms的差别就是搞笑

now := A_TickCount
RunWait("blank.ahk")
MsgBox A_TickCount-now

你还是别搞笑了。ahk 启动慢,跟exe/dll 7Z有毛关系?
它再慢,调用exe/dll,都是微秒级的

而我说的,“dll比exe快,解压小文件更是快得飞起”,到底有什么问题?

所以我问你快多少
我这是30ms你觉得多快算快

另外我说ahk启动速度的原因就是
我的脚本它是单独运行的
它启动到结束就至少要100ms

你给我想个办法让调用的人不运行加载进内存吧

“所以我问你快多少” 看前文。
“我这是30ms你觉得多快算快”,这30MS好像是说检测是否包含密码的耗时?

你这种"我启动时间都100毫秒+,DLL快得这几十毫秒时间我不在乎"的想法,我是没什么想法。
想要快,常驻进程呗。
而且你测试方法有误,启动时间不是一个进程的"启动+退出"。你应该将启动时间通过启动参数传递给ahk,让它计算用时。

解压一个空密码50mb+的文件
测试是否包含密码30ms
解压560ms
重命名320ms(解压到临时文件夹,然后重命名或移出临时文件夹)
这就是为什么我不在这里讲究 ms 差别的原因

其他的每一步耗时可能至少是dll或exe之间差距的几十倍
为什么要把心力花在这几ms上

#####
F:\Documents\Downloads\新建文件夹\新建文件夹.zip
[命令行正确] [430] [31ms] [2022/6/18 3:53:33]
检查密码....
[其他] [343] [563ms] [2022/6/18 3:53:34]
[0] 解压 <--> F:\Documents\Downloads\新建文件夹\新建文件夹.zip
[重命名] [251] [328ms] [2022/6/18 3:53:34]
__7z20220618155333 <--> F:\Documents\Downloads\新建文件夹\新建文件夹

可悲。别忘记加上启动ahk的100毫秒。
我算看明白了,咱们对"效率软件"的定义有完全不同的看法。
每次调用EXE/DLL,DLL都要快几十毫秒。你至少要调用两次,只快了"几MS"?
50MB,解压到临时文件夹,肯定是用DLL解压到内存无法比拟的。

所以目前你还是没回答我检查一个文件是否包含密码用dll要多久

解压到内存然后你是否要移动?
你考虑过压缩文件大小没
压缩文件10G+你怎么办

另外在内存中你解压完是否要移动
从内存中移动10G的文件到硬盘要多久(SSD,HHD之间还有差别)
我直接重命名或移动临时文件最多也就200-500ms

另外你为什么认为解压文件是效率软件