Чтобы определить, имеет ли файловая система возможность сжатия, можно использовать утилиту, включенную в 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
AFAIR fsutil
включен как минимум начиная с Windows XP
... вы можете использовать компактную утилиту для де-сжатия файлов и папок в файловой системе, которая поддерживает это. Будет ли это вообще существовать на ПК с Windows, установленном в файловую систему FAT? Если так, что произойдет, если вы запустите его?
compact
Утилита присутствует в Windows XP, даже если она установлена на FAT, но вернет код ERRORLEVEL больше нуля, если попытаться запустить его на FAT. Я считаю, что это сохранилось, потому что Windows XP поддерживает преобразование файловой системы FAT в NTFS в живых системах, поэтому она может быть использована в будущем.