如何在Windows 10中检查文件是否启用了文件系统压缩?
Windows 10 检测指定文件是否启用文件系统层面压缩的可行方法
实测fileattrib接口确实不会返回文件压缩相关的标志位,无法通过该接口完成检测,以下两种方法都可以可靠实现需求:
- 调用Windows原生API读取属性
直接调用系统kernel32.dll提供的GetFileAttributes接口获取目标文件的属性值,判断返回值是否携带FILE_ATTRIBUTE_COMPRESSED标记(对应数值为0x800),该标记位为1就代表文件启用了NTFS文件系统级压缩。
如果是在MATLAB环境下开发,直接通过loadlibrary加载系统动态库调用该接口即可,不需要额外安装工具。 - 调用系统内置命令解析结果
用系统自带的compact命令就能查,执行如下命令:compact /a "目标文件完整路径"
中文系统返回结果里出现已压缩: 是、英文系统返回结果里出现Compressed: Yes,就说明文件是文件系统层面的压缩状态。这个命令不需要管理员权限,输出结果简单好解析,适合脚本场景使用。
不推荐用fsutil系列命令做这个检测,这类命令需要管理员权限,返回结果解析逻辑更复杂,没必要。
注意:以上方法检测的是NTFS原生的压缩属性,和资源管理器文件属性里「压缩内容以便节省磁盘空间」的勾选状态完全对应,不会把zip、7z这类归档格式的压缩文件误判为文件系统压缩。
内容的提问来源于stack exchange,提问作者Argyll
相关产品推荐
相关产品推荐

