Como excluir arquivos de uma pasta usando uma lista de nomes de arquivos no Windows?


23

tenho uma pasta com mais de 2K arquivos, preciso excluir cerca de 200, tenho um arquivo txt com todos os nomes de arquivos que preciso remover ordenados em uma lista, como faço para remover os arquivos específicos da pasta usando a lista? (O SO é o Windows 7)

Respostas:


18

A maneira simples é copiar o arquivo txt para um arquivo chamado mydel.batno diretório dos arquivos a serem excluídos. Usando um editor como o Microsoft Word, edite esse arquivo. Faça uma substituição global na Nova Linha normalmente ^pno Word. Substitua por space/f^pdelspace. Isso vai mudar

File1.bin
File20.bin
File21.bin

para (com /fpara "forçar a exclusão de arquivos somente leitura"):

File1.bin /f
del File20.bin /f
del File21.bin /f
del

Edite a primeira linha para adicionar o delespaço e exclua a última linha.

Execute o comando em lote.


Além do parâmetro / Y, que aparentemente não funciona em Win7 del comando, isso funcionou muito bem .. obrigado
Avishking

2
Provavelmente é /fpara "forçar exclusão de arquivos somente leitura" em vez de /y.
afrazier

Corrigir afrazier. Eu estava misturando o / Y que funciona com o XCOPY e um ou dois outros programas do DOS para 'Suprimir o prompt para confirmar a ação'
kingchris

Nos editores que sabem como encontrar / substituir por regex, como o Notepad ++, seria necessário substituir "^" por "del" e "$" por "/ f", em que ^ representa o início de cada linha e $ - o fim.
Dan Mirescu

38

Digite isso na linha de comando, substituindo seu arquivo por files_to_delete.txt:

for /f %i in (files_to_delete.txt) do del %i

Uma versão adequada para incluir nos .cmdarquivos (duplo %%) e capaz de lidar com espaços nos nomes dos arquivos:

for /f "delims=" %%f in (files_to_delete.txt) do del "%%f"

1
Na verdade, isso excluiu a lista de arquivos em vez dos próprios arquivos ... tive que criar a lista novamente: |
Avishking 9/11/11

4
Minhas desculpas mais profundas. Eu esqueci a /fbandeira.
William Jackson

Isso é muito bacana, eu não sabia que a linha de comando suporta loops assim. Gostaria de escrever uma postagem no blog SU sobre este e outros meandros da linha de comando?
Ivo Flipse 9/11

1
@ Ivo: Você pode dar uma olhada em computerhope.com/batch.htm ou superuser.com/questions/tagged/batch para saber mais. Como o Unix, muito do que pode ser feito em scripts (arquivos em lote) também pode ser feito diretamente na linha de comando.
BlueRaja - Danny Pflughoeft

Criei um arquivo bat e copiei o segundo exemplo: resultado: o files_to_delete.txt ainda é removido. (mesmo com o sinalizador / f)
bvdb 27/07

18

Usando o PowerShell:

Get-Content c:\path\to\list.txt | Remove-Item

1
Uau, isso é muito mais legível que o lote.
TheLQ

Para futuros leitores ... tive que mudar o operador do tubo para A >para fazer isso funcionar. Ou seja Get-Content c:\path\to\list.txt > Remove-Item... eu tinha caminhos UNC completos no meu list.txt. Espero que isto ajude.
NateJ 11/04

@NateJ Eu tentei usar o >e ele apenas criou um arquivo para mim, em vez de excluir as coisas.
Brian J

@BrianJ hmm, eu vou ter que verificar o que eu fiz .. boa captura.
NateJ

1

Eu imagino que isso possa ser feito com o PowerShell.

Conhecendo Perl , costumo usá-lo para esse tipo de coisa

perl -l -n -e "unlink" filenames.txt

1

O primeiro método funciona após algumas alterações:

  1. abra o bloco de notas
  2. copie todos os nomes de arquivos com a extensão que precisa ser excluída após adicionar delno início, como

    del File1.bin
    del File20.bin
    del File21.bin
    
  3. salve o arquivo como xyz.batna mesma pasta

  4. execute o arquivo

2
... o arquivo de texto na pergunta tem cerca de 200 nomes de arquivos. Por que adicionar delmanualmente como você está propondo, enquanto as soluções já foram publicadas para automatizá-lo? Como um aparte: qualquer editor sensato teria algum suporte para pesquisar e substituir, incluindo terminações de linha (ou iniciações de linha, usando expressões regulares), macros ou edição de modo de bloco ou coluna (geralmente iniciada mantendo pressionada a tecla Option ou Alt e selecionando um bloco, após o qual é possível digitar várias linhas ao mesmo tempo).
Arjan
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.