¿Hay alguna forma de eliminar una carpeta en Windows y no tomar el tiempo proporcionalmente a la cantidad de archivos que contiene?
Bueno, sí, formatea la partición. Estoy un poco sorprendido de que nadie sugirió eso en los últimos 9 años.
Es bastante radical, pero si anticipa hacer esto con frecuencia para una carpeta específica, puede valer la pena crear una partición separada para ella.
Si eso es demasiado radical, las otras respuestas son su única esperanza. Hay una buena explicación de por qué en serverfault . Es para sistemas de archivos Linux y XFS, pero aquí se aplica la misma lógica. No puede mejorar mucho las funciones integradas del sistema operativo.
Sin embargo, si conoce las rutas a todos los archivos que desea eliminar, puede guardar en las llamadas que enumeran el contenido del directorio y eliminar llamadas directamente, ahorrando algo de sobrecarga. Sin embargo, sigue siendo proporcional al número de archivos.
Personalmente, me gusta un informe de progreso para asegurarme de que el programa no murió. Entonces me gusta eliminar cosas a través de Python. Por ejemplo, si todos los archivos están en un directorio sin subdirectorios:
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
Esto elimina alrededor de 250 archivos / s en mi SEAGATE ST3250620NS de 12 años. Supongo que será mucho más rápido en tu disco.
Sin embargo, en este punto es solo micro-optimización, por lo que no servirá de mucho a menos que tenga millones de archivos en un directorio. (como yo, jajaja, qué he hecho D :)