comando dir WinXP: 3 e 4 extensões de caracteres são os mesmos?

2

Estou tentando pesquisar recursivamente uma árvore de diretórios para encontrar todos os arquivos .asp usando o seguinte comando:

dir *.asp /s

Por algum motivo, isso retorna não apenas os arquivos asp, mas também os arquivos aspx.

Como posso forçá-lo a ignorar os arquivos aspx?

    
por chris 28.01.2011 / 13:58

4 respostas

5

dir /x

Por motivos de compatibilidade, o Windows gera um nome 8.3 para cada nome de arquivo longo criado e o código de correspondência de caractere curinga ( FindFirstFile() ) verifica ambos os nomes originais e abreviados. Use dir /x para ver quais nomes curtos são designados para cada arquivo.

A parte "extensão" de um nome 8.3 é sempre criada simplesmente truncando a última extensão para no máximo 3 caracteres: .aspx to .ASP

Ao usar o sistema de arquivos NTFS, o nome 8.3 criação pode ser desativado em todo o sistema usando:

fsutil behavior set disable8dot3

No entanto, isso não afetará os nomes existentes . Você terá que renomear cada arquivo e depois renomeá-lo para o nome original.

Veja também: Pesquisa de diretório no Prompt de Comando do Windows mostra saída incorreta!

    
por 28.01.2011 / 14:52
0

É claro que isso varia de acordo com o comando DIR do interpretador de comandos usado. O comando DIR no Take Command , por exemplo, corresponde apenas a nomes longos por padrão e, portanto, não exibe esse comportamento. ( A correspondência de nomes curtos e longos pode ser ativada para compatibilidade com o comando DIR do CMD.) Portanto, há maneiras de lidar com isso que não exigem FSUTIL e privilégios de administrador.

    
por 22.02.2011 / 18:27
0

Interessante - parece ser um bug ...

Considerando que eu enviaria pelo caminho:

dir /s *.asp | find /i /v ".aspx "
    
por 28.01.2011 / 14:29
0

Se você tiver o PowerShell , poderá usar:

dir *.asp -r | remove-item

Se você não tem o PowerShell, por que não?

    
por 25.08.2013 / 18:00