Excluindo arquivos de extensão específica usando o comando DIR na linha de comando do Windows

19

se eu quiser ver, por exemplo, arquivos de uma extensão específica usando apenas a listagem de diretórios, posso fazer isso usando o comando:

DIR *.txt 

E mostra todos os arquivos com .txtextensão.
Agora eu quero saber se existe algum comando com o qual posso excluir determinadas extensões?
Por exemplo, não quero ver nenhum arquivo com extensão .exe, como posso fazer isso?

Johnydep
fonte

Respostas:

26

O DIR não permitirá o que você está tentando fazer. No entanto, o DIR e o FINDSTR podem resolver isso.

Por exemplo, o seguinte ignora todos os arquivos .txt na lista DIR.

dir | findstr /v /i "\.txt$" 
IDesconhecido
fonte
1
você pode querer usar dir /b | findstr /v /i "\.txt$"porque dira saída vontade do cabeçalho e os possíveis arquivos e pastas incorrectas contar no final
phuclv
Por que findstracabou find?
Sopalajo de Arrierez 01/01/19
Como find procura por texto e o findstr suporta expressões regulares, sugeri o Findstr. Se você quiser apenas pesquisar uma string exata, também funcionaria bem.
sei o que você está
8
dir /B | find /V ".txt"

Isso listaria todos os arquivos e a localização filtraria qualquer coisa que não contenha ".txt". Está longe de ser perfeito, mas talvez seja o suficiente :)

Der Hochstapler
fonte
Não preciso /B, eu diria, mas prefiro essa resposta, desde que não veja a necessidade de 'findstr' (a atual aceita).
Sopalajo de Arrierez 01/01/19
3

Depende do seu interpretador de comandos.

A Microsoft cmdnão possui esse recurso, como você pode ver nas outras respostas onde é necessário pós-processar a saída dir. O TCC / LE da JP Software faz. É chamado de intervalo de exclusão de arquivo e é usado assim no exemplo da sua pergunta:

dir /[!*.exe] *

JdeBP
fonte
Obrigado, mas acho que essa ferramenta é executada como um programa independente. Eu estou fazendo meu aplicativo onde eu executo processos externos usando o shell do Windows ou o bash no ubuntu, então essa ferramenta não se encaixa. Se eles fornecerem opções de linha cmd, será útil.
Johnydep
1
O acima mencionado claramente é uma opção de linha de comando. Leia a documentação com hiperlink. Obviamente, na maioria das linguagens de programação, é bastante tolo usar o shell para obter o conteúdo do diretório e você está no StackExchange errado para escrever aplicativos.
JdeBP
obrigado pela explicação, isso é verdade, mas é uma solução alternativa para verificar os diretórios que exigem Elevação e não quero fazer meu código acionar o prompt do UAC, quando posso obter resultados do prompt do cmd sem exigir privilégios mais altos.
Johnydep 31/01