![检测 Windows 文件系统是否支持内置文件压缩?](https://linux22.com/image/1568989/%E6%A3%80%E6%B5%8B%20Windows%20%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E6%98%AF%E5%90%A6%E6%94%AF%E6%8C%81%E5%86%85%E7%BD%AE%E6%96%87%E4%BB%B6%E5%8E%8B%E7%BC%A9%EF%BC%9F.png)
Windows NTFS 支持内置文件夹和文件级压缩。Windows FAT 不支持。
(还有其他也属于这两类之一。
如何检测文件系统是否具有此功能?
设想:需要编写一些活动脚本,如果可能的话,希望将某些文件设置为压缩。但如果不能,脚本就不会失败;所以理想情况下,我希望先检查这一点。所以最好的情况是找到一种简单的命令行方法来检查压缩功能。
备注/相关:根据有没有办法通过命令提示符切换 Windows“压缩此驱动器”命令?您可以使用该compact
实用程序在支持该功能的文件系统上实际解压/压缩文件和文件夹。这在安装到 FAT 文件系统的 Windows PC 上是否存在?如果存在,运行它会发生什么?(我没有示例 PC 可以尝试。)
笔记: 似乎有一种编程方式可以做到这一点,但正如前面提到的,对于脚本应用程序来说,这并不是最好的方法。
答案1
要检测文件系统是否具有压缩功能,可以使用 Windows 附带的实用程序fsutil
,唯一需要记住的是,它fsutil
需要管理权限。您可以直接检测文件系统:
fsutil fsinfo volumeinfo c: | find "File System Name"
这将返回文件系统名称。
如果您只需要检测压缩支持,那么您可以运行以下代码:
fsutil fsinfo volumeinfo c: | find "Supports file-based Compression"
它会透露您所需的具体细节。
另外,通过检查完整输出,fsutil
可以获得有关相关文件系统的更多详细信息(如下所示):
Volume Name : VolumeLabel
Volume Serial Number : 0x01020304
Max Component Length : 255
File System Name : NTFS
Supports Case-sensitive filenames
Preserves Case of filenames
Supports Unicode in filenames
Preserves & Enforces ACL's
Supports file-based Compression
Supports Disk Quotas
Supports Sparse files
Supports Reparse Points
Supports Object Identifiers
Supports Encrypted File System
Supports Named Streams
Supports Transactions
Supports Hard Links
Supports Extended Attributes
Supports Open By FileID
Supports USN Journal
AFAIRfsutil
至少从 Windows XP 开始就包含在内
...您可以使用 compact 实用程序来实际解压/压缩支持此功能的文件系统上的文件和文件夹。这在安装到 FAT 文件系统的 Windows PC 上是否存在?如果存在,运行它会发生什么?
compact
即使安装在 FAT 上,Windows XP 中也存在该实用程序,但当尝试在 FAT 上运行它时,它将返回大于零的 ERRORLEVEL 代码。我认为它之所以被保留,是因为 Windows XP 支持在实时系统上将 FAT 文件系统转换为 NTFS,因此它可以在将来使用。