脚本专家 发表于 2026-6-9 13:00:02

Compressed2TXT v6.5 使用指南:将文件编码为 BAT 脚本的原理与选项详解

Compressed2TXT 是一款将文件或文件夹编码为批处理脚本(BAT)的实用工具,版本 v6.5。它利用 MakeCab LZX 压缩、BAT85/BAT91 编码以及 PowerShell/C# 混合技术,能够将 exe 等二进制文件嵌入到单个 BAT 脚本中,方便分发、调用或隐藏。本文基于官方文档和更新日志,梳理其核心机制、选项含义及适用场景,帮助开发者正确选择参数。

一、工具背景与原理

Compressed2TXT 本质上是一个 cmd/PowerShell 混合脚本,通过“发送到”菜单集成在 Windows 资源管理器中。它把选中的源文件先使用 MakeCab 的 LZX 算法压缩(生成 CAB 档案),再将压缩后的二进制数据编码为纯文本字符(BAT85 或 BAT91 字符集),最终嵌入到一个经过特殊编排的 .bat 文件中。运行该 BAT 时,脚本会通过内置的解码和解压函数还原原始文件。

支持的操作系统为 Windows 7 及以上,要求 PowerShell 2.0 和 C# 2.0 运行时环境。编码后的脚本会尽量避免触发 Windows 记事本的折行限制(将编码文本拆分为 ≤128 字符或 <1024 字符的行),并在脚本首行加入前缀(如 :: )以禁用高级文本查看器的语法高亮。

二、核心编码类:BAT85 与 BAT91

工具内置两种编码方式,由 GUI 选项 3 控制:


[*]BAT85(默认):使用 85 个可见字符的字典,解码密钥必须严格由 85 个不重复的基本字典字符组成(不含 MSCAB.:D 这 6 个保留字符),且密钥内不能出现重复字符。安全性基于 85-6=79 字符的排列组合,强度极高。
[*]BAT91:使用 91 个字符的字典,生成文件体积比 BAT85 小约 1.7%,但可能包含对 Web 不友好的字符(如 <、*、、%、\、>),若最终 BAT 需要嵌入 HTML 或传输到某些论坛,建议谨慎使用。


三、GUI 选项与参数详解

运行时弹出的图形界面提供 6 个选项(可多选),每个选项对应不同的编码行为:

选项 1:输入解码密钥作为密码
允许用户手动指定一个 85 位(BAT85)或 91 位(BAT91)的密钥,该密钥必须由基本字典中的非重复字符组成,且不能包含 MSCAB.:D 这 6 个字符串中的字符。密钥将被保存在外部文件 ~key.ini 中,方便重复使用。注意:同一脚本内若捆绑多个文件,所有文件必须使用相同的密钥。

选项 2:随机化解码密钥
与选项 1 配合使用。勾选后,工具会生成一个随机密钥,并在编码前提示用户接受或更改。若不勾选选项 1 而仅勾选选项 2,则密钥由程序自动生成。

选项 3:BAT91 编码器(替代 BAT85)
启用后改用 BAT91 字符集,文件体积更小,但需注意上文的字符兼容性问题。

选项 4:没有长队
在编码时避免使用过长的队列(即控制批处理脚本中的行数),减少运行时的开销。适用于希望对最终 BAT 脚本行数严格控制的场景。

选项 5:无 LZX 压缩
关闭 MakeCab 的 LZX 压缩,直接存储 CAB 档案。对于单个巨大且不可压缩的文件(如已压缩的 zip、jpg 或多媒体文件),开启压缩反而浪费时间。官方举例:一个 259.45 MB 的源文件压缩后仅减少 1.06%,却花费 4 分钟处理,这时应勾选此选项。

选项 6:无 txt 编码(仅限 CAB 存档)
不将 CAB 档案编码为文本字符,而是直接生成一个 .cab 文件(并非 BAT 脚本)。此模式适合需要保留压缩包的场景,但生成的不是可执行 BAT。

四、使用流程与注意事项

1. 将 Compressed2TXT 安装至“发送到”菜单后,右键选中一个或多个文件/文件夹,选择“发送到 → Compressed2TXT”。
2. 在弹出窗口中勾选需要的选项(若什么都不选,默认使用 BAT85 + LZX 压缩)。
3. 若勾选了选项 1,需手动输入符合长度和字符集的密钥(工具会自动校验并提示错误)。
4. 点击“编码”后,工具会先分析源文件是否可访问,跳过无法读取的文件;然后进行两次 MakeCab 处理(第二次主要减少文件名树的大小),最后生成 .bat 文件。
5. 生成的 BAT 脚本可在任何 Windows 7+ 系统上运行,解码并还原原始文件。

注意事项:

[*] 运行生成的 BAT 脚本是危险动作,请确保来源可靠;若对脚本内容不熟悉,请勿执行。
[*] 默认使用 LZX 压缩对深度目录结构和大量小文件效果最佳;对于大体积且已压缩的文件,务必勾选选项 5 以节省时间。
[*] 当捆绑多个文件时,密钥必须一致,否则解码失败。
[*] 工具在编码时会尝试写入默认用户文件夹,若不可写,将自动回退到桌面目录。


五、更新日志摘要(v6.5)


[*] 改进 MakeCab DDF 生成器,更好处理本地化和特殊字符文件名。
[*] 两次扫描 MakeCab 以压缩文件名树体积。
[*] 改进 BAT85 解码器,新增 BAT91 备选方案。
[*] 增强对多个选定文件和文件夹作为源的处理能力。
[*] 提示接受或更改随机化解码密钥。
[*] 原始 cmd/PowerShell 混合,使用 $选项 变量提升脚本友好度。
[*] 跳过不可访问文件,使用桌面回退测试不可写目录。
[*] 简化展开函数,修复未选择任何选项时的默认行为。
[*] 打印总处理时间。


通过以上选项的合理搭配,开发者可以针对不同文件类型生成体积可控、安全性较高的自解压 BAT 脚本。在实际项目中,建议先对小型测试文件进行编码,验证密钥和压缩策略的可行性后再批量处理。

热心网友6 发表于 2026-6-9 13:10:01

Re: Compressed2TXT v6.5 使用指南:将文件编码为 BAT 脚本的原理与选项详解

感谢分享这么详细的指南!之前用过旧版本,一直对BAT85和BAT91的区别有点模糊,今天总算搞清楚了。选项5关闭LZX压缩的那个例子很实用,确实大型媒体文件再压缩纯属浪费时间。 想请教一下,选项4“没有长队”具体是怎么控制脚本行数的?是固定每行不超过某个长度,还是通过其他方式减少队列深度?另外,如果编码多个小文件,默认的BAT85+LZX压缩,最终生成的bat脚本体积大概会比原始文件大多少?谢谢!

热心网友3 发表于 2026-6-22 20:40:02

Re: Compressed2TXT v6.5 使用指南:将文件编码为 BAT 脚本的原理与选项详解

感谢楼主这么详细的梳理!之前用过这个工具,但对BAT85和BAT91的具体差别一直有点模糊,看了你的解释终于明白了——原来BAT91体积更小但要注意字符兼容性,这个提醒很实用。另外选项5(无LZX压缩)的适用场景也讲得很清楚,我之前对大文件也傻傻地开压缩,确实浪费时间,以后会注意区分。想再请教一下:如果勾选了选项1自定义密钥,生成的~key.ini文件能不能直接复制到别处复用?还是说每个不同的脚本都要重新生成密钥?

热心网友3 发表于 2026-6-22 20:50:02

Re: Compressed2TXT v6.5 使用指南:将文件编码为 BAT 脚本的原理与选项详解

感谢楼主的详细讲解,之前用过这个工具但一直对几个选项的用途拿不准,现在清楚多了。特别是选项5那个LZX压缩的例子很直观,以后处理大体积压缩包会记得勾上。另外想请教一下,如果只是临时在同事间分享一个小工具,用默认的BAT85加随机密钥是否就够了?还是说有必要手动指定符合规则的密钥来提升安全性?
页: [1]
查看完整版本: Compressed2TXT v6.5 使用指南:将文件编码为 BAT 脚本的原理与选项详解