通过使用该命令,compact.exe /compactos:query
我得到的只是紧凑型操作系统压缩是否被激活,而不是使用什么压缩算法,例如 LZX、XPRESS4K、XPRESS8K 或 XPRESS16K。
我按照https://renenyffenegger.ch/notes/Windows/dirs/Windows/System32/compact_execompact.exe /exe:algorithm
的建议进行了尝试,但没有成功。它不理解开关并返回开关列表的一般解释。/?
仅供参考,我在安装 Windows 后使用命令压缩了驱动器,compact.exe /compactos:always
没有任何额外的开关。到目前为止的表现非常好。
另一个问题是,我在几篇文章中看到只有系统文件或可执行文件是通过这种方法压缩的。我可以放心,pdf、图像、音频、txt 等数据文件不会被压缩吗?
Compact.exe 已经默认显示算法
见倒数第二列,
C
表示默认的 LZNT1 算法,l
即 LZX、x
XPRESS4K 和X
XPRESS8K 或 XPRESS16K。事实上compact
列表文件就像dir
你可以compact /a
用来显示系统/隐藏文件或compact /s
递归显示文件不幸的是,虽然没有办法区分 XPRESS8K 和 XPRESS16K
compact.exe
,但您可以通过直接调用 Win32 API 来做到这一点。CompactOs 的新算法是通过 Windows 覆盖过滤器 (WOF) 处理的,您可以使用它的WofIsExternalFile
API 来检索压缩信息。我编写了一个名为compression.ps1
do do that 的 PowerShell 脚本。这是上面相同文件的输出这是它的源代码,保存为 *.ps1 并如上运行
请注意,NTFS 压缩和 CompactOS 是完全不同的功能。当 MS 引入新的 CompactOS 功能时,他们将其合并到
compact
命令中,因为它们与压缩有关。但 CompactOS 纯粹是为了压缩只读系统文件以节省 OS 占用空间。您可以清楚地看到该选项被调用/exe
,因为它旨在压缩可执行文件。这就是为什么新算法不是为编辑和写入文件而设计的,它们会解压缩它们OTOH NTFS 压缩功能使用旧的 LZNT1 算法,旨在处理任何文件。它支持即时编辑,您可以在其中任意写入文件并且它们仍然被压缩。您还可以将文件夹中的新文件标记为使用 LZNT1 自动压缩,但不使用新算法
请注意,该
/exe
选项不是用于检查算法,而是在压缩时指定算法。compact /C /exe:<algorithm> your_files
将使用指定的 EXE 算法压缩指定的文件,而compact /C your_files
将使用 NTFS 压缩压缩文件我怎么知道使用的压缩算法
CompactOs
似乎没有办法检索使用的算法。
algorithm
是一个占位符。您应该将其替换为一种受支持的压缩方法:来源:Compact - 压缩文件 - Windows CMD - SS64.com
示例用法:
这几乎是正确的。它只会压缩“操作系统二进制文件”。这可能包括系统可执行文件和 DLL 文件,但不包括其他非系统可执行文件。
(强调我的)
来源:Compact - 压缩文件 - Windows CMD - SS64.com
是的。文档没有提到这些类型的文件。
关于您的主要问题——CompactOS 使用什么算法——我可以确认它总是使用
XPRESS4K
。无需检查compact
命令。此外,CompactOS不允许用户选择算法。如果您尝试组合
/CompactOS
和/EXE
命令行参数,compact.exe
将无法识别它们。