Como recursivamente excluo todos os arquivos ou pastas cujos nomes correspondem a um padrão no Windows?

2

Para o exemplo de arquivo, gostaria de excluir todos os arquivos correspondentes. +? [a-f0-9] {4} .html (ou seja, qualquer arquivo html que termine com um hexadecimal de quatro dígitos). Então paged47c.html seria excluído, mas page.html permaneceria.

Para o exemplo de pasta, gostaria de excluir todas as pastas correspondentes. +? [A-Z] + (ou seja, qualquer pasta que contenha uma letra maiúscula). Então algumas pastasSE93_89ds / seriam deletadas, mas algumas pastas / permaneceriam.

Eu não trabalho muito com a linha de comando, mas eu provavelmente poderia ter um exemplo envolvendo "del" para trabalhar para mim. Alternativamente, existe um programa GUI simples para o Windows que faria isso?

    
por zylstra 06.04.2012 / 23:15

2 respostas

4

Eu diria que a maneira mais fácil, embora não seja a rota direta, é fazer o seu comando especializado dir (você pode usar / b e / s alternados para torná-lo apenas listar o nome do arquivo e para recuperar diretórios) e redirecioná-lo para um arquivo. Abra-o no bloco de notas (ou insira seu editor favorito), pesquise e substitua para adicionar "del" ao início das linhas, salve-o como mydel.bat e execute.

Então, um exemplo seria: %pr_e%

    
por 07.04.2012 / 00:04
1

Use a seguinte linha no powershell:

Get-ChildItem -Recurse C:\| where { ! $_.PSIsContainer } | Where-Object {$_.Name -match ".+?[a-f0-9]{4}.html"}

É para o caso do arquivo, para o caso de pasta use:

Get-ChildItem -Recurse C:\| Where-Object { $_.PSIsContainer }| Where-Object {$_.Name -match ".+?[A-Z]+"}

Armazene os dois em variáveis e use Remove-Item

Aviso: No meu comando, estou usando a raiz C:\ como o local de origem. Se você quiser canalizar sua saída para Remove-Item e você está executando isso como administrador, é uma má idéia. No mínimo, faça um dos seguintes:

  1. Exclui especificamente Windows
  2. Usando o what-if flag
  3. Não execute como administrador (se os arquivos que você está correspondendo não estiverem em um diretório protegido, não importará)
  4. Não corra use C:\ , mas de algum lugar seguro
por 07.04.2012 / 00:05

Tags