Определить, поддерживает ли файловая система Windows встроенное сжатие файлов?

312
DaveInCaz

Windows NTFS поддерживает встроенное сжатие папок и файлов. Windows FAT нет.

( И есть другие, которые также попадают в одну из этих двух категорий.)

Как вы можете определить, имеет ли файловая система такую ​​возможность?

Сценарий: необходимо написать сценарий для некоторых действий и установить сжатые файлы, если это возможно. Но если это не так, сценарий не может потерпеть неудачу; так что в идеале я хотел бы проверить это в первую очередь. Таким образом, лучший случай - найти простой подход командной строки для проверки возможностей сжатия.


Примечание / Связанный: Согласно Есть ли способ переключить команду Windows «Сжать этот диск» через командную строку? вы можете использовать compactутилиту для де-сжатия файлов и папок в файловой системе, которая поддерживает это. Будет ли это вообще существовать на ПК с Windows, установленном в файловую систему FAT? Если так, что произойдет, если вы запустите его? (У меня нет примера ПК, чтобы примерить его.)


Примечание. Похоже, что для этого есть программный способ, но, как уже упоминалось, это не самый лучший подход для скриптового приложения.

1
Если .NET Framework установлен на всех компьютерах, вам лучше использовать Zip в скрипте. https://stackoverflow.com/questions/17546016/how-can-you-zip-or-unzip-from-the-script-using-only-windows-built-in-capabiliti DrMoishe Pippik 6 лет назад 0
"Будет ли это вообще существовать на ПК с Windows, установленном в файловую систему FAT?" - Windows не поддерживает установку в файловую систему FAT в то время. Почему вы беспокоитесь об этом крайнем случае? Ramhound 6 лет назад 0
@DrMoishePippik спасибо; причина рассмотрения сжатия файловой системы состоит в том, чтобы иметь возможность оставлять файлы сжатыми, которые затем могут использоваться уже существующими программами. DaveInCaz 6 лет назад 1
@ Ramhound это справедливо; но у нас есть пользователи, которые все еще используют старые ПК, и я бы хотел, чтобы в этих случаях ничего не ломалось. DaveInCaz 6 лет назад 0
@DaveInCaz - Когда я говорю, я говорю о Windows 98 и более ранних версиях. По умолчанию для Windows XP всегда была NTFS. Это означает, что если у ваших пользователей установлена ​​Windows, установленная в разделе FAT, это означает, что они являются операционной системой, выпущенной два десятилетия назад. Ramhound 6 лет назад 0
@Ramhound это была XP, о которой я думал ... но вы можете быть правы, что случаи, когда он будет установлен в FAT, могут быть очень редкими. DaveInCaz 6 лет назад 0

1 ответ на вопрос

3
Alex

Чтобы определить, имеет ли файловая система возможность сжатия, можно использовать утилиту, включенную в 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 в живых системах, поэтому она может быть использована в будущем.

`compact` необходим для поддержки всех томов NTFS, не только загрузочного тома, но даже съемных томов. MSalters 6 лет назад 0