Como posso procurar arquivos que são compactados ou descompactados no Windows Explorer?

3

Eu sei que o Windows Explorer pode colorir o estado de compactação NTFS de um arquivo, nas exibições regular e de pesquisa.

Como posso filtrar / pesquisar especificamente arquivos que são compactados ou descompactados no nível do NTFS?

De preferência, uma solução que funcione no Windows XP e superior (existem alguns dispositivos de hardware para os quais não há drivers disponíveis para qualquer coisa, seja Vista ou superior).

Como o Windows Search é muito intensivo em CPU, eu gostaria de uma solução sem isso também.

    
por Jeroen Wiert Pluimers 22.03.2014 / 14:30

2 respostas

5

Interface da linha de comandos

O Windows XP não fornece uma maneira de listar arquivos compactados prontos para uso, e até mesmo os métodos de pesquisa avançada não são projetados para essas tarefas. O prompt de comando vem para o resgate:

cd /d "C:\Some folder"
compact | findstr /c:" 1 C"

O comando cd é simplesmente usado para navegar para o diretório de destino. Quando o comando compact é executado sem parâmetros, ele listará todos os arquivos junto com seus detalhes de compactação, se houver. A saída pode então ser filtrada redirecionando-a para findstr . Para o que vale a pena, esse método deve funcionar mesmo no Windows 2000.

Ainda assim, a saída é bastante detalhada. Para retirar as informações extras, é necessário mais algum trabalho:

for /f "tokens=9,*" %A in ('"compact | findstr /c:" 1 C" "') do @dir /b "%A*%B" 2>nul

O comando acima exibirá apenas nomes de arquivos compactados. O comando dir ajudará a validar os nomes dos arquivos para evitar falsos positivos (por exemplo, aqueles que contêm a string 1 C em seus nomes).

Parâmetros adicionais que você pode usar são:

  • /s Aplica o comando a todas as subpastas.
  • /a Exibe arquivos ocultos ou do sistema.

Observe que esses parâmetros devem ser usados para os comandos compact e dir , se necessário.

Para listar arquivos descompactados, você pode usar o parâmetro /v do comando findstr para reverter o filtro e alterar o valor tokens para 8 (isso porque os arquivos descompactados não têm o C marcador, que afeta a string tokenização ).

Leitura adicional

Sintaxe de consulta avançada

Windows Search queries are specified in Advanced Query Syntax (AQS) which supports not only simple text searches but provides advanced property-based query operations as well.

Source: Windows Search - Advanced Query Syntax

O AQS foi introduzido pela primeira vez com o Windows Desktop Search, que foi posteriormente aprimorado e integrado ao Windows Vista como Windows Search . Você precisa instalá-lo separadamente em sistemas operacionais anteriores.

A consulta a seguir listará todos os arquivos que possuem o atributo de archive definido e são compactados. Ele funciona no Windows XP, Vista e 7. Ele também deve funcionar no Windows 8.x, embora eu não tenha testado.

System.FileAttributes:(2080)

Em localidades em inglês, você também pode usar:

attributes:(2080)

Veja uma lista dos valores mais úteis:

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

No exemplo acima, combinei FILE_ATTRIBUTE_ARCHIVE e FILE_ATTRIBUTE_COMPRESSED : 32 + 2048 = 2080 .

Você pode pesquisar qualquer combinação usando o operador OR lógico. Por exemplo, para pesquisar arquivos compactados que são somente leitura ou não:

System.FileAttributes:(2080 OR 2081)

Para inverter os resultados da pesquisa, você pode usar o operador NOT :

System.FileAttributes:NOT(2080 OR 2081)

Leitura adicional

por 22.03.2014 / 16:45
0

and31415 publicou uma boa solução para o Windows Explorer que funcione pelo menos no Windows 7 e superior (talvez no Vista, irá verificar isso mais tarde).

Assim, para versões mais antigas do Windows, como XP e 2003, pesquisei por uma solução de linha de comando que pudesse gerar uma lista de arquivos compactados ou descompactados.

Compact : legal, mas a saída é difícil de analisar

A primeira ideia foi usar o compact , que acompanha o Windows.

E, de fato, ele pode listar arquivos (coloque os parâmetros entre aspas quando contiverem espaços):

compact [filemask] /a /s:[directoryname]

O formato é fácil de ler para humanos, mas não é fácil de analisar.

FindCompressed tem um bug com nomes de caminho longos que fornecem listagens como esta:

C:\Program Files\VMware\Infrastructure\Virtual Infrastructure Client\Help\en\DRS41\wwhelp\wwhimpl\common\htmlinit3.htm
C:\Program Files\VMware\Infrastructure\Virtual Infrastructure Client\Help\en\DRS41\wwhelp\wwhimpl\common\htmlpagenav.htm
...
C:\Program Files\VMware\Infrastructure\Virtual Infrastructure Client\Help\en\DRS41\wwhelp\wwhimpl\common\html\imagessplash.jpg
C:\Program Files\VMware\Infrastructure\Virtual Infrastructure Client\Help\en\DRS41\wwhelp\wwhimpl\common\imagestoolsbg.gif
...
C:\Program Files\VMware\Infrastructure\Virtual Infrastructure Client\Help\en\DRS41\wwhelp\wwhimpl\common\scriptsunidata.js

Por isso, corta partes dos arquivos ou diretórios quando os nomes ficam muito longos.

# FindCompressed : bom, a primeira / última linha de saída precisa ser removida

A Exodus Development escreveu a ferramenta de linha de comando FindCompressed . Sem parâmetros, ele encontra arquivos compactados. Com o parâmetro -su , ele encontra arquivos descompactados. Coloque [directoryname] entre aspas quando contiver espaços.

FindCompressed.exe -su [directoryname]

FindCompressed tem uma desvantagem: sempre inicia a saída com essa linha em que # é [nome do diretor]:

Recursive search of compact #.

e termina com uma linha como esta:

Found # uncompressed files in # items examined. 

As linhas entre elas contêm um caminho completo para o nome do arquivo descompactado ou compactado.
Isso é fácil de analisar.

    
por 22.03.2014 / 19:52