Gibt es eine Möglichkeit, einen Ordner in Windows zu löschen, ohne dass die benötigte Zeit proportional zur Anzahl der darin enthaltenen Dateien ist?
Ja, formatieren Sie die Partition. Ich bin ein bisschen überrascht, dass in den letzten 9 Jahren niemand darauf hingewiesen hat.
Es ist ziemlich radikal, aber wenn Sie damit rechnen, dies häufig für einen bestimmten Ordner zu tun, lohnt es sich möglicherweise, eine separate Partition dafür zu erstellen.
Wenn das zu radikal ist, sind die anderen Antworten Ihre einzige Hoffnung. Es gibt eine gute Erklärung, warum bei Serverfehlern . Es ist für Linux- und XFS-Dateisysteme, aber hier gilt die gleiche Logik. Sie können die eingebauten Betriebssystemfunktionen nicht wesentlich verbessern.
Wenn Sie jedoch die Pfade zu allen Dateien kennen, die Sie löschen möchten, können Sie bei Aufrufen speichern, in denen der Verzeichnisinhalt aufgeführt ist, und direkt das Entfernen von Aufrufen ausführen, wodurch ein gewisser Aufwand gespart wird. Trotzdem proportional zur Anzahl der Dateien.
Persönlich mag ich einige von Fortschrittsberichten, um mich zu vergewissern, dass das Programm nicht gestorben ist. Also lösche ich gerne Sachen per Python. Wenn sich zum Beispiel alle Dateien in einem Verzeichnis ohne Unterverzeichnisse befinden:
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
Dies löscht ungefähr 250 Dateien / s auf meinem 12 Jahre alten SEAGATE ST3250620NS. Ich würde davon ausgehen, dass es auf Ihrer Festplatte viel schneller sein wird.
Zu diesem Zeitpunkt handelt es sich jedoch nur um eine Mikrooptimierung, sodass Sie nur dann viel tun können, wenn Sie Millionen von Dateien in einem Verzeichnis haben. (wie ich, lol, was habe ich getan D :)