Qual é a maneira mais rápida de excluir uma pasta grande no Windows?

224

Quero excluir uma pasta que contém milhares de arquivos e pastas. Se eu usar o Windows Explorer para excluir a pasta, pode levar de 10 a 15 minutos (nem sempre, mas frequentemente). Existe uma maneira mais rápida no Windows de excluir pastas?

Outros detalhes:

  • Eu não ligo para a lixeira.
  • É uma unidade NTFS.
BrezzaP
fonte
1
Também perguntei aqui no Superusuário
Hugo
1
Talvez o rm -rf no cygwin seja mais rápido, e talvez um cd ao vivo do linux rm -rf seja ainda mais rápido.
barlop
usando cygwin ls Diretório> list_files e fazer uma iteração sobre os list_files e usar rm-rf (lidando com uma grande piscina arquivo de 1TB e funciona bem)
gnuyoga
Gente, eu não tenho certeza se essa é a mesma experiência que todos os outros têm ... mas se eu excluir uma pasta grande e a cancelar, enquanto ela estiver excluindo a pasta, ela desapareceu e a lixeira está vazia. Não sei por que isso funciona, mas funciona para mim.
ladieu

Respostas:

333

Use o prompt de comando do Windows:

rmdir /s /q folder
Stephen Denne
fonte
22
btw, você também pode usar rd / q / s <foldername>, no entanto, embora seja mais rápido que a representação gráfica no Windows Explorer, ainda levará muito tempo - o MS usa o algoritmo 'Schlemeil the Painter' (joelonsoftware. com.br / artigos / fog0000000319.html) sempre que um dir ou del é feito
Warren
37
A pasta rm -rf funciona maravilhosamente rápido se você tiver o Cygwin instalado.
Sinan Ünür 23/05/09
45
Eu costumava usar isso, mas encontrei uma combinação de del + rmdir quase três vezes mais rápido que o rmdir comum. Veja minha resposta: stackoverflow.com/questions/186737/…
Hugo
2
A sugestão de Sinan é a mais rápida. Instale o cygwin.com e use rm -rfv folderName no prompt de comando do cygwin.
Lonnie Melhor
1
+1 no Cygwin, que desvincula a estrutura, um pouco mais rápido do que as ferramentas do Windows, mas não tão seguro.
Tracker1
975

A pior maneira é enviar para a Lixeira: você ainda precisa excluí-los. O pior é o seguinte shift + delete com o Windows Explorer: perde muito tempo verificando o conteúdo antes de começar a excluir qualquer coisa.

O melhor a seguir é usar rmdir /s/q foldernamena linha de comando. del /f/s/q foldernametambém é bom, mas deixa para trás a estrutura de diretórios.

O melhor que encontrei é um arquivo em lotes de duas linhas com uma primeira passagem para excluir arquivos e saídas para nul, para evitar a sobrecarga de gravar na tela todos os arquivos singe. Uma segunda passagem limpa a estrutura de diretórios restante:

del /f/s/q foldername > nul
rmdir /s/q foldername

Isso é quase três vezes mais rápido que um único rmdir, com base em testes de tempo com um disco criptografado do Windows XP, excluindo ~ 30 GB / 1.000.000 de arquivos / 15.000 pastas: rmdirleva ~ 2,5 horas, del+rmdirleva ~ 53 minutos. Mais informações em Super Usuário .

Essa é uma tarefa regular para mim, portanto, geralmente movo as coisas que preciso excluir para C: \ stufftodelete e tenho esses del+rmdircomandos em um arquivo em lotes deletestuff.bat. Está programado para ser executado à noite, mas às vezes eu preciso executá-lo durante o dia, para que quanto mais rápido, melhor.

A documentação do Technet para delcomando pode ser encontrada aqui . Informações adicionais sobre os parâmetros usados ​​acima:

  • /f - Forçar (ou seja, excluir arquivos, mesmo que sejam somente leitura)
  • /s- Subpastas recursivas / incluídas (esta definição do SS64 , como o technet simplesmente declara "arquivos especificados", o que não é útil).
  • /q - Silencioso (ou seja, não solicite confirmação do usuário)

Documentação para rmdir aqui . Os parâmetros são:

  • /s - Recursivo (ou seja, igual ao parâmetro del's / s)
  • /q - Silencioso (ou seja, igual ao parâmetro del's / q)
Hugo
fonte
1
Tentei isso hoje (reconhecidamente em um conjunto de dados menor) e obtive o resultado oposto: usar apenas rmdir foi 30% mais rápido (3:17) do que usar del e depois rmdir (2:15).
Harry Johnston
6
Eu precisava "Executar como administrador" para que isso funcionasse, dependendo da unidade.
Eyal
1
Que tal usar o Cygwin. Sei que é uma camada sobre o Windows, mas o mundo do Linux pode nos ajudar a servir melhor?
sarat
1
Isso funcionou muito bem para mim. Ele excluiu cerca de 16 GB, algumas centenas de milhares de arquivos em segundos no Windows 7. O sistema operacional ficou suspenso por um tempo antes de eu desistir e pesquisar aqui.
Engineero
4
Uma solução excelente e elegante, posso sugerir que simplifiquemos o comando usando o e comercial do shell de comando: Executar comandos em sucessão: del /f/s/q foldername > nul & rmdir /s/q foldername ou Executar comandos em sucessão somente se o primeiro comando for bem-sucedido. del /f/s/q foldername > nul && rmdir /s/q foldername
GBGOLC 11/08/19
6

use a cópia rápida , uma ferramenta gratuita. possui uma opção de exclusão muito mais rápida que a maneira como o Windows exclui arquivos.

Stephen Denne
fonte
1
Eu tentei o FastCopy. não tenho certeza se é mais rápido que o Windows, eu estava apenas com 92 arquivos / segundo excluídos. Considerando que eu desisti de contar o número de arquivos acima de 250K, vai me levar para sempre usar ... Oh, bem. Cada arquivo tem apenas 20 bytes. Arquivos de sessão PHP malditos.
28410 Chrispix
1
tente a ferramenta gratuita de código aberto RapidDeletePro: github.com/mhisoft/RapidDeletePro
Tony
3

use o prompt de comando, conforme sugerido. Eu descobri por que o explorer é tão lento há algum tempo, ele fornece uma estimativa de quanto tempo levará para excluir os arquivos / pastas. Para fazer isso, é necessário digitalizar o número de itens e o tamanho. Isso leva tempo, daí a espera ridícula com pastas grandes.

Além disso, o explorer será interrompido se houver um problema específico com um arquivo,

nicodemus13
fonte
3

e para excluir muitas pastas, você também pode criar um arquivo em lotes com o comando spdenne publicado.

1) crie um arquivo de texto com o seguinte conteúdo substituindo os nomes das pastas entre aspas pelos nomes das suas pastas:

rmdir /s /q "My Apps"  
rmdir /s /q "My Documents"  
rmdir /s /q "My Pictures"  
rmdir /s /q "My Work Files"

2) salve o arquivo em lotes com uma extensão .bat (por exemplo, deletefiles.bat)
3) abra um prompt de comandos (Iniciar> Executar> Cmd) e execute o arquivo em lotes. você pode fazer isso assim no prompt de comando (substituindo X pela letra da unidade):

X:  
deletefiles.bat
xyz
fonte
2
Sim, eu tenho um arquivo de lote semelhante, mas encontrou uma combinação de del + rmdir o mais rápido: stackoverflow.com/questions/186737/...
Hugo
-1

Experimente Shift+ Delete. Fiz 24.000 arquivos em 2 minutos para mim.

jeroen
fonte
13
Veja acima - evita a lixeira, mas ainda muito mais lenta que a linha de comando.
andig
1
Este método irá apagar os arquivos diretamente em vez de movê-las para a lixeira, mas o explorador ainda vai tentar contar todos os arquivos, a fim de obter uma estimativa, que leva as idades para grandes pastas (> 100k arquivos)
uceumern
qual foi o tamanho médio do arquivo?
your_boy_gorja
@your_boy_gorja o problema não é o tamanho médio dos arquivos, mas a quantidade de arquivos em uma pasta. Ao excluir por Explorer, o Explorer precisa ler todos os arquivos para obter o tamanho e tentar fazer uma estimativa
Vinicius Monteiro
@uceumern sim esta coisa de contagem que ele faz é ridículo com uma pasta com muitos, muitos arquivos (~ 40GB com arquivos 1m +)
Brian Leishman