Интерфейс командной строки
В Windows XP нет возможности составить список сжатых файлов «из коробки», и даже расширенные методы поиска не предназначены для таких задач. На помощь приходит командная строка:
cd /d "C:\Some folder"
compact | findstr /c:" 1 C"
Команда cd
просто используется для перехода к целевому каталогу. Когда команда compact
запускается без параметров, она перечисляет все файлы вместе с деталями их сжатия, если таковые имеются. Выходные данные могут быть отфильтрованы путем перенаправления его на findstr
. Для чего стоит, этот метод должен работать даже на Windows 2000.
Тем не менее, вывод довольно многословен. Для извлечения дополнительной информации требуется еще немного работы:
for /f "tokens=9,*" %A in ('"compact | findstr /c:" 1 C" "') do @dir /b "%A*%B" 2>nul
Команда выше покажет только сжатые имена файлов. Команда dir
поможет проверить имена файлов, чтобы избежать ложных срабатываний (например, тех, которые содержат строку 1 C
в своем имени).
Дополнительные параметры, которые вы можете использовать:
/s
Применяет команду ко всем подпапкам.
/a
Отображает скрытые или системные файлы.
Обратите внимание, что эти параметры должны использоваться как для команд compact
и для команд dir
, если это необходимо.
Чтобы получить список несжатых файлов, вы можете использовать параметр /v
команды findstr
чтобы отменить фильтр и изменить значение tokens
на 8
(это потому, что несжатые файлы не имеют маркера C
, что влияет на токенизацию строки).
дальнейшее чтение
Расширенный синтаксис запроса
Поисковые запросы Windows указываются в расширенном синтаксисе запросов (AQS), который поддерживает не только простой текстовый поиск, но и предоставляет расширенные операции запросов на основе свойств.
Источник: Windows Search - расширенный синтаксис запроса
AQS был впервые представлен в Windows Desktop Search, который впоследствии был улучшен и интегрирован в Windows Vista как Windows Search. Вам необходимо установить его отдельно в более ранних операционных системах.
Следующий запрос выведет список всех файлов, для которых установлен атрибут архива и которые сжаты. Работает в Windows XP, Vista и 7. Он также должен работать в Windows 8.x, хотя я не тестировал.
System.FileAttributes:(2080)
На английском языке вы также можете использовать:
attributes:(2080)
Вот список наиболее полезных значений:
FILE_ATTRIBUTE_READONLY = 1
FILE_ATTRIBUTE_HIDDEN = 2
FILE_ATTRIBUTE_SYSTEM = 4
FILE_ATTRIBUTE_ARCHIVE = 32
FILE_ATTRIBUTE_COMPRESSED = 2048
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 8192
В приведенном выше примере я объединил FILE_ATTRIBUTE_ARCHIVE
и FILE_ATTRIBUTE_COMPRESSED
: 32 + 2048 = 2080
.
Вы можете искать любые комбинации, используя логический оператор OR
. Например, для поиска сжатых файлов, которые доступны только для чтения или нет:
System.FileAttributes:(2080 OR 2081)
Чтобы инвертировать результаты поиска, вы можете использовать оператор NOT
:
System.FileAttributes:NOT(2080 OR 2081)
дальнейшее чтение