Excluindo todos os arquivos que não correspondem a um determinado padrão - linha de comando do Windows

10

Excluir itens pela linha de comando é muito fácil.

del /options filename.extension

Agora, suponha que eu queira excluir todos os arquivos que não terminam com .jpg em uma pasta, como eu faria isso?

O problema é que eu tenho um software que converte todas as imagens especificadas em .jpg, mas deixa os originais, que eu não preciso mais.

Seria muito mais eficiente executar uma única instrução, em comparação com várias declarações para cada tipo de arquivo diferente.

    
por KdgDev 30.08.2009 / 21:16

6 respostas

12

Eu faria assim:

attrib +r *.jpg
del /q *
attrib -r *.jpg

Isso primeiro fará com que todos os arquivos JPG sejam somente leitura, exclua todo o restante (ele ignorará automaticamente os arquivos somente para leitura) e torne os arquivos JPG graváveis novamente.

    
por 30.08.2009 / 22:25
8

Isso é realmente muito fácil.

Você precisará de for para iterar os arquivos e depois procurar a extensão:

for %f in (*) do if not %~xf==.jpg del "%f"

deve fazer o truque (código aqui ).

    
por 30.08.2009 / 22:12
1

Powershell para o resgate
Nos tempos do Windows 7/8 é o sucessor da boa e velha linha de comando

Del C:\myFolder\* -exclude '*.jpg'

Del é um alias para Remove-Item . Tem várias opções como recursar, incluir, excluir e filtrar (use isso para RegEx)

Você precisa adicionar \* para incluir arquivos em uma determinada pasta

    
por 23.09.2014 / 19:09
1

Eu sei que não está respondendo sua pergunta diretamente, mas você já viu as opções no seu conversor para ver se:

  1. Pode apagar os originais em si

ou

  1. Escreva o .jpg para uma nova pasta?
por 30.08.2009 / 21:20
0

Eu estava procurando uma maneira de encontrar todos os arquivos que não têm a extensão ".mp3" em um diretório TREE no Windows 7 (volume NTFS) contendo talvez 20.000 arquivos em várias centenas de diretórios de várias profundidades ... então depois um pouco de angústia, eu usei:

cd <theplace>
dir /S | find /V "<DIR>" | find /V "Total" | find /V "bytes" | find /V "Directory" | find /V "Volume" | find /V ".mp3" | more /S

isso listou os arquivos que não correspondem ao arquivo .mp3 depois de eliminar tudo relacionado à saída do comando DIR ... 99% funciona ... a menos que o arquivo que não corresponda seja denominado uma das palavras-chave no padrão Saída DIR - talvez haja uma maneira de fazer DIR reportar menos informações de cabeçalho / resumo - mas eu não me incomodei, pois isso chegou a maior parte do caminho.

    
por 18.02.2012 / 15:35
0

Outra maneira de excluir todos os arquivos que correspondem a um nome de arquivo é mostrada abaixo. Todos os arquivos da lista de loops for e as correspondências if NOT por nome de arquivo (sem nome de diretório).

for /r %f in (*) do if not %~nxf == abc.xml del "%f"
    
por 23.09.2014 / 18:53