sz333 发表于 2026-8-19 15:31:02

智能解压工具 v1.1:自动合并分卷、循环解压多层加密包、密码自动尝试、重复文件自动剔除,单exe免安装,Win10/11 可用。

本帖最后由 sz333 于 2026-8-21 23:44 编辑

[智能解压工具 v1.1]Created by sz333

面向分卷、多层嵌套、加密资源包的自动解压工具。

能力:

分卷自动合并:partN / .NNN / .zNN / .rNN 命名均可识别
按文件头魔数识别真实格式,自动改后缀循环解压(最多 30 层)
密码按序自动尝试(默认 猫里奥小新 / 小猫喝奶啤 / dpsvip,可自定义)
解压后剔除完全重复文件;同名不同大小自动重命名
成功后清理原始分卷与中间压缩包
形态:单 exe,内嵌 7-Zip,免安装,Windows 10/11 x64。

声明:本软件完全免费。如通过购买获得,请立即退款。无需赞赏,愿天下开源。

8.19更新:
1.优化了文件剔除逻辑
2.应用图标改为大肥鱼。
8.20更新
════════════════════════════════════════
sz333解压工具 更新日志
════════════════════════════════════════

更新内容

◆ 重要修复
· 修复解压"深层目录/超长路径"资源包时报
    "路径或文件名太长"、输出文件缺失的问题
    (改用长路径直通 + 自动截断清洗,实测 600+
    字符深层路径正常解压、文件完整)

◆ 界面优化
· 初始窗口加大、行距与按钮间距整体放宽,
    125%~200% 系统缩放自适应
· 深色主题全面完善:列表/表头/输入框/按钮
    全跟随换色,白色主题干净清爽
· 按钮文字不再被裁切

◆ 功能增强
· 支持直接把文件拖进窗口添加
· 解压前磁盘空间预检查,空间不足提前警告
· 自动剔除完全重复的文件(每层预处理)
· 文件名/路径自动清洗(非法字符、超长路径)
· 解压完成:提示音 + 托盘通知 + 一键打开输出文件夹
· 可选"完成后自动关机"(带确认窗口)
· 双进度条:任务总进度 + 当前文件实时进度

◆ 其他
· 密码试错静默无感,命中即解
· 密码保存在本机注册表,无外置文件
· 单 exe 免安装,Win10/11 直接运行

完全免费 · 如通过购买获得请立即退款
无需赞赏 · 愿天下开源   —— sz333
════════════════════════════════════════
════════════════════════════════════════sz333解压工具 更新日志(对比老 v1.2)════════════════════════════════════════◆ 解压更智能· 工作流模式:自动记录解压链路(每层格式/伪装格式/密码),    下次同来源按链路一键解压,跳过探测与试错· 密码错误即时处理:全部密码失败时弹窗输入正确密码,自动重试· 密码列表可拖动排序,顺序即尝试顺序;删除/清空有确认◆ 界面更清爽· 选项卡结构:解压 / 工作流 / 设置,无菜单栏· 设置独立成选项卡,密码管理移到主界面· 文件列表区域放大,工作流说明不再遮挡◆ 体验更顺手· 中途取消立即终止当前任务,原始文件保留· 默认不再预置密码,全部自配;保存位置可选(注册表/密码列表.txt)· 默认托盘通知不弹窗,完成不打扰

sz333 发表于 2026-8-19 15:45:54

更新:1.优化了文件剔除逻辑

2641571289 发表于 2026-8-19 16:28:10

标记mark一下

13141 发表于 2026-8-19 18:37:25

;P试一下

omiyue 发表于 2026-8-19 20:37:43

试了的兄弟们说说怎么样?

a5233913 发表于 2026-8-19 21:06:30

标记mark

zhxiz 发表于 2026-8-19 21:48:30

去我的收藏夹里吃灰吧

匿名用户 发表于 2026-8-19 23:57:12

标记mark

yoshiki 发表于 2026-8-20 00:35:25

解压这块确实比较麻烦,这会是个很好很实用的工具,但是在测试的时候发现了点小问题。起因是看到说内置的7z,我就用站内光输不赢大佬的最新资源ntr猎人进行了测试,mp4转zip确实只能用winrar,解压过程没有问题但随后出现报错处理异常:指定的路径或文件名太长,或者两者都太长。完全限定文件名必须少于 260 个字符,并且目录名必须少于 248 个字符。
对比手动解压,输出的文件缺少了一些,有意思的是缺少了这部分nwjs.app的文件没有影响游戏的启动。

我是完全不懂任何相关知识的,所有认知全部来源于ai。询问deepseek得知问题在于解压完成后,UnpackCore.MoveToFinal 方法使用 .NET 的 Directory.Move / File.Move 将整个结果目录从临时目录移动到最终输出目录(源文件所在目录)。由于最终路径(源目录 + 压缩包内部深层目录)超过 Windows 传统 MAX_PATH(260 字符)限制,且 .NET 默认未启用长路径支持,Directory.Move / File.Move 直接抛出 IOException,导致移动中断,部分文件未能到达目标位置。

给出了解决方案但是我不能验证
核心思路:给所有传给文件系统 API 的路径添加 \\?\ 长路径前缀,绕过 260 字符限制。

1. 添加路径转换辅助方法
在 UnpackCore 类中添加:
private static string ToLongPath(string path)
{
    if (string.IsNullOrEmpty(path) || path.StartsWith(@"\\?\"))
      return path;
    return @"\\?\" + path;
}

2. 修改 MoveToFinal 方法
将原始方法替换为以下版本(注意先正常组合路径,最后统一添加前缀):
private static string MoveToFinal(string resultDir, string outputRoot, string baseName, ILog log)
{
    // 先组合目标路径(不包含前缀)
    string text = Path.Combine(outputRoot, baseName);
    int num = 2;
    while (Directory.Exists(ToLongPath(text)) || File.Exists(ToLongPath(text)))
    {
      text = Path.Combine(outputRoot, baseName + "_" + num);
      num++;
    }

    Directory.CreateDirectory(ToLongPath(outputRoot)); // 确保输出根存在

    if (File.Exists(ToLongPath(resultDir)))
    {
      Directory.CreateDirectory(ToLongPath(text));
      string text2 = Path.Combine(text, Path.GetFileName(resultDir));
      File.Move(ToLongPath(resultDir), ToLongPath(text2));
      log.Log("📁 最终结果:" + text);
      return text;
    }

    string[] fileSystemEntries = Directory.GetFileSystemEntries(ToLongPath(resultDir));
    if (fileSystemEntries.Length == 1 && Directory.Exists(ToLongPath(fileSystemEntries)))
    {
      MoveDirectory(ToLongPath(fileSystemEntries), ToLongPath(text));
    }
    else
    {
      MoveDirectory(ToLongPath(resultDir), ToLongPath(text));
    }

    log.Log("📁 最终结果:" + text);
    return text;
}

3. 修改 MoveDirectory 和 CopyDirectory
public static void MoveDirectory(string src, string dst)
{
    src = ToLongPath(src);
    dst = ToLongPath(dst);
    try
    {
      Directory.Move(src, dst);
    }
    catch (IOException)
    {
      CopyDirectory(src, dst);
      Directory.Delete(src, true);
    }
}

private static void CopyDirectory(string src, string dst)
{
    src = ToLongPath(src);
    dst = ToLongPath(dst);
    Directory.CreateDirectory(dst);
    foreach (string text in Directory.GetDirectories(src, "*", SearchOption.AllDirectories))
    {
      Directory.CreateDirectory(ToLongPath(text.Replace(src, dst)));
    }
    foreach (string text2 in Directory.GetFiles(src, "*", SearchOption.AllDirectories))
    {
      File.Copy(text2, ToLongPath(text2.Replace(src, dst)), true);
    }
}

4. 同时处理其他文件枚举操作(可选但推荐)
CollectTree 和 Deduplicate 中也涉及目录遍历,虽然它们被 try-catch 包裹不会导致主流程崩溃,但可能静默漏掉长路径文件。若想彻底修复,需在这些方法中同样为路径添加 \\?\ 前缀,例如:
在 CollectTree 中递归调用时,对 root、返回的目录/文件路径统一加前缀。
在 Deduplicate 中,对 Directory.GetDirectories、Directory.GetFiles 的输入路径和结果路径加前缀。
不过,当前主要问题出在 MoveToFinal,先修改这部分即可解决“解压成功但移动失败导致文件缺失”的问题。

补充建议
应用程序清单:为了让 .NET 的内置 API 原生支持长路径,可以在 exe 中嵌入 app.manifest 并包含 <longPathAware>true</longPathAware>。但即使没有,使用 \\?\ 前缀也能绕过大部分限制。
异常处理:在 ProcessGroup 的 catch 中,可以考虑保留临时目录以便用户手动恢复,目前代码已经保留了临时目录,但提示不够友好。
用户侧临时方案:在修复版发布前,用户可以启用系统长路径支持(注册表 LongPathsEnabled=1 并重启),同时将压缩包和输出目录放在短路径(如 D:\1)下,可降低触发概率。

在ds这次升级之前有试过写一些简单的代码效果非常的差,对于以上内容我持观望态度,希望有大手子能帮到你。

sz333 发表于 2026-8-20 08:22:40

yoshiki 发表于 2026-8-20 00:35
解压这块确实比较麻烦,这会是个很好很实用的工具,但是在测试的时候发现了点小问题。起因是看到说内置的7z ...

收到,会更新到持续可用的状态。今天会做个大更新解决一系列问题,比如我回家用自己电脑测试发现解压临时目录在c盘把我c盘干爆了,欢迎再试试

yoshiki 发表于 2026-8-20 09:58:34

sz333 发表于 2026-8-20 08:22
收到,会更新到持续可用的状态。今天会做个大更新解决一系列问题,比如我回家用自己电脑测试发现解压临时 ...

辛苦了感谢付出

carrsoncoen 发表于 2026-8-20 10:27:30

感谢分享,6666666666666666666!!!

一介撸夫 发表于 2026-8-20 19:03:09

一直都是无法发言,今天才知道未验证邮箱,特地验证来评论下。
首先非常感谢大佬无私的付出,分享确实能带来不少的愉快
但是还是小小的建议,如果说是开源,还是建议使用代码仓库进行公开,而不是只提供一个运行的exe。虽然说是开源,但是exe是打包编译后的产物,我们当然相信大佬的无私,而且也是ai开发的,所以只是小小建议。
另外,不瞒大佬说,我用codex开发了相似内容的,我的思路和大佬的有点不一样,这就说说我的思路吧:



循环解压需要设置层数,检验文件头也需要读取验证,而且有些文件是伪装文件,并不是单独的改后缀就可以的。还有就是像这个网站的猫总,压缩包一大,程序难免会压力大。
所以我设计的解决方案是:两种模式并行,已知大佬模式根据大佬的压缩包名称进行识别模式,然后进入工作流模式,比如猫总的压缩包是数字.part1.rar,解压后得到数字.jpg,改名解压后得到rar,再解压后得到本体。软件匹配后,直接按照工作流直接解压。



另一种模式就是类似大佬的智能解压模式,由软件识别文件头,然后尝试解压,并且可以由自己手动设置层数,达到层数则停止下探,若成功解压,则会提示记录工作流,让用户修改并保存当前工作流,然后下一次相同作者的压缩包可以直接按工作流直接解压,无需进入扫描过程。
另外,检测部分我是用三压缩引擎同步进行的探测,谁快用谁,7z虽然好用,但是在某些压缩格式兼容性并不好,不如用用户自己安装的压缩软件。也能避免深层目录和超长路径的问题。
再就是,密码和缓存,我还是建议设置成用户软件所在的文件夹,而不是注册表或者说c盘缓存。至少给用户自己选择的权力。
再就是多任务模式,软件最好支持多任务,这样设置一个主目录后,软件就可以自己解压并提取文件,删除缓存。很方便。



小小建议 另外提供下思路,总之非常感谢大佬分享

sz333 发表于 2026-8-20 20:18:58

一介撸夫 发表于 2026-8-20 19:03
一直都是无法发言,今天才知道未验证邮箱,特地验证来评论下。
首先非常感谢大佬无私的付出,分享确实能带 ...

感谢建议。
1.代码仓库周六我会上传到github并更新楼层,只扔一个exe是为了方便大家使用,论坛只支持5MB的压缩包上传,也会继续根据大家的需要更新;
2.多任务、工作流、多压缩引擎我会尝试加上,深层目录和超长路径的问题应该是1.2版本解决了;
3.初版dsh设计了单独的密码本,后面我反而去掉了。中间文件这些设置周六我也会加入,多保留用户的自由度;
4.其实还有更简便的方法,就是之前部署个系统环境变量winrar,然后直接在压缩包目录运行一个.bat(还是dsr1写的)也可以做到80%的功能。我发楼下。
p.s.我唯一的编程经验是大学里的76分的C++,能自己这样制造软件多少有点不真实,或者说我之前一直用的对话式AI让我没意识到现在AI发展的多么快。

sz333 发表于 2026-8-20 20:26:01

功能概述
本脚本用于批量处理当前文件夹内的所有文件(除自身外),执行两步操作:

强制重命名:将所有文件(不含文件夹)的后缀名改为 .rar;

自动解压:遍历所有 .rar 文件,使用预设的密码列表尝试解压,直至成功或全部密码失败。
页: [1] 2
查看完整版本: 智能解压工具 v1.1:自动合并分卷、循环解压多层加密包、密码自动尝试、重复文件自动剔除,单exe免安装,Win10/11 可用。