Existe uma maneira de excluir uma pasta no Windows e não levar o tempo proporcional ao número de arquivos nela?
Bem, sim, formate a partição. Estou um pouco surpreso que ninguém tenha sugerido isso nos 9 anos anteriores.
É bastante radical, mas se você antecipar isso com frequência para uma pasta específica, pode valer a pena criar uma partição separada para ela.
Se isso é radical demais, as outras respostas são sua única esperança. Há uma boa explicação sobre o motivo da falha no servidor . É para sistemas de arquivos linux e XFS, mas a mesma lógica se aplica aqui. Você não pode melhorar muito as funções integradas do sistema operacional.
No entanto, se você souber os caminhos para todos os arquivos que deseja excluir, poderá economizar nas chamadas que listam o conteúdo do diretório e remover diretamente, economizando algumas despesas. Ainda proporcional ao número de arquivos.
Pessoalmente, gosto de alguns dos relatórios de progresso para garantir que o programa não tenha morrido. Então, eu gosto de excluir coisas via python. Por exemplo, se todos os arquivos estiverem em um diretório sem subdiretórios:
import tqdm
import sys
import os
location = sys.argv[1]
directory = os.fsencode(location)
with os.scandir(directory) as it:
for dir_entry in tqdm.tqdm(it):
try:
os.remove(dir_entry.path)
except OSError:
pass # was not a file
Isso exclui cerca de 250 arquivos / s no meu SEAGATE ST3250620NS de 12 anos. Eu diria que será muito mais rápido em sua unidade.
No entanto, neste momento, é apenas micro-otimização, por isso não fará muito, a menos que você tenha milhões de arquivos em um diretório. (como eu, lol, o que eu fiz D :)