Das Löschen einer großen Anzahl von Dateien in Windows ist langsam

34

Ich habe eine Windows XP-Box mit einer NTFS-Festplatte und das Löschen großer Dateien ist extrem langsam. Wenn ich einen Ordner auswähle, der eine große Anzahl von Dateien in einem Ordnerbaum enthält, und lösche (mit Umschalt-Entf, um den Papierkorb zu speichern), dauert es eine Weile, die direkt proportional zur Anzahl der Dateien im Ordner zu sein scheint, bevor dieser gerade ist öffnet das Bestätigungsfeld. Das Löschen jeder Datei im Ordner dauert dann noch länger.

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?

Sindri Traustason
quelle

Antworten:

60

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?

Ich denke nicht, aber einige Methoden sind deutlich schneller als andere.

Am schlimmsten ist es, sie in den Papierkorb zu verschieben: Sie müssen sie noch löschen. Das nächste Problem ist Shift + Delete mit Windows Explorer: Es kostet viel Zeit, den Inhalt zu überprüfen, bevor mit dem Löschen begonnen wird.

Als nächstes verwenden Sie am besten rmdir /s/q foldernamedie Befehlszeile. del /f/s/q foldernameist auch gut, aber es hinterlässt die Verzeichnisstruktur.

Das Beste, was ich gefunden habe, ist eine zweizeilige Batch-Datei mit einem ersten Durchgang zum Löschen von Dateien und Ausgaben an nul, um den Overhead beim Schreiben auf den Bildschirm für jede einzelne Datei zu vermeiden. Ein zweiter Durchlauf bereinigt dann die verbleibende Verzeichnisstruktur:

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

Dies ist fast dreimal schneller als ein einzelnes rmdir, basierend auf Zeittests mit einer mit Windows XP verschlüsselten Festplatte. Das Löschen von ~ 30 GB / 1.000.000 Dateien / 15.000 Ordnern rmdirdauert ~ 2,5 Stunden und del+rmdir~ 53 Minuten. Mehr Infos hier .

Dies ist eine normale Aufgabe für mich, daher verschiebe ich normalerweise das zu löschende Material nach C: \ stufftodelete und habe diese del+rmdirBefehle in einer Stapeldatei deletestuff.bat. Dies soll nachts laufen, aber manchmal muss ich es tagsüber laufen lassen, je schneller desto besser.

Hugo
quelle
Positive Bewertung für include> nul
Nuktu 06.04.17
1
Windows würde mich warten lassen, um viele Tausend Dateien von einem Backup eines alten SDK zu scannen. Es würde mindestens eine Stunde dauern, dies könnte in meinem Fall 10 Minuten dauern. Ich habe es zur Wiederholung in eine Fledermausdatei gelegt: gist.github.com/DavidEdwards/61d4d336232284b33b237b04da5bfe10
Knossos
Siehe auch die gleiche Antwort mit weiteren Informationen unter superuser.com/questions/19762/mass-deleting-files-in-windows
Warlike Chimpanzee
1

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 :)

FirefoxMetzger
quelle
0

Installieren gnutools for windowsund ausführen:

find YOURFOLDER -type d -maxdepth 3 | xargs rm -Rf
nutzlos
quelle
0

Stellen Sie sicher, dass Sie keine Dateien in der Cloud sichern und gleichzeitig versuchen, sie zu löschen!

Bei vielen Cloud-Sicherungslösungen werden Dateien während der Sicherung gesperrt, und Sie müssen warten, bis sie gesichert sind.

Wenn Sie dieses Problem mit einem temporären Verzeichnis haben (oder mit etwas, das nicht gesichert werden muss), stellen Sie sicher, dass das temporäre Verzeichnis nicht in Ihrem Sicherungssatz ausgewählt ist.

Simon
quelle
0

Ich habe festgestellt, dass Ordner mit mehreren Verzeichnisebenen dazu neigen, die Fähigkeit von Window, sie schnell zu entfernen, wirklich zu verlangsamen. Ich habe an einem Projekt gearbeitet, bei dem es 5 Ebenen gedauert hat, um zum Ordner node_modules zu gelangen, der auch mit dem man immer eine Bestie löschen kann

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

In dieser Situation navigiere ich zum Ordner node_modules oder zu einem Verzeichnis mit den tiefsten Ebenen und beginne mit dem Auswählen und Löschen von etwa einem Dutzend Verzeichnissen gleichzeitig. Wenn mehrere Löschvorgänge ausgeführt werden, wird der Papierkorb gezwungen, in parallelen Prozessen zu arbeiten, und nicht in einem einzelnen Thread, von dem ich glaube, dass er verwendet wird. Dies beschleunigt den Prozess erheblich.

Sobald mein tiefstes Verzeichnis leer ist, gehe ich ein paar Stufen hoch und mache dasselbe. Dies hat Löschvorgänge verringert, die mich über eine Stunde bis zu wenigen Minuten gekostet haben.

Es ist ein sehr manueller Prozess und könnte wahrscheinlich mit einigem Erfolg geschrieben werden, aber es ist das, was für mich funktioniert hat

TabsNotSpaces
quelle
0

Ich habe Hugos ursprüngliche Antwort verwendet, um eine .bat-Datei zu erstellen, die ich beim Löschen von NPM-Projekten verwende. Ich habe eine Pfadvariable hinzugefügt und muss den Pfad nur einmal kopieren und einfügen. Doppelklicken Sie auf die BAT-Datei, um die gesamte Arbeit zu erledigen. Sie müssen nicht alles eingeben.

set path="FOLDER_PATH"
del /f/s/q %path% > nul
rmdir /s/q %path%

Anwendungsbeispiel:

set path="C:\Projects\My React Project"
del /f/s/q %path% > nul
rmdir /s/q %path%
Halcyon
quelle
-2

haben Sie versucht, die Eingabeaufforderung zu verwenden

rmdir /s /q foldername

Alle großen Dateioperationen in GUIs sind langsam - hauptsächlich, weil visuelles Feedback (Fortschrittsbalken) mehrmals überarbeitet werden muss

nEJC
quelle
5
Das ist schwachsinn. Der Vorgang kann langsam sein, da die grafische Benutzeroberfläche alle Dateien zählen muss, um die erforderliche Zeit zu schätzen, jedoch nicht aufgrund von Neulackierungen.
Bender
falsch ... Ich arbeite ständig mit großen Ordnern (meistens Win2K-Server) und benutze TotalCommander zum Verschieben / Kopieren / Löschen von Dingen. Mir ist aufgefallen, dass wenn ich TC minimiere oder ein anderes Anwendungsfenster über TC lege, die Aufgaben mindestens 50% schneller erledigt werden. TC malt immer noch visuelles Material neu, aber beim Compositing wird alles ignoriert ...
nEJC
6
Ist Ihr Computer so langsam, dass GUI-Vorgänge die E / A-Leistung der Festplatte beeinträchtigen? Oder ist TotalCommander einfach unglaublich schlecht codiert? Die Festplatte ist hunderte oder tausende Male langsamer als die CPU, der RAM und die Grafikkarte. Wenn Grafiken die Schreibgeschwindigkeit Ihres Datenträgers verlangsamen, treten erhebliche Probleme auf.
Mr. Shiny und New 安 安
1
Die Frage hatte "nicht die Zeit proportional zur Anzahl der Dateien" aus einem Grund genommen. Ich suche nicht 50% schneller.
Sindri Traustason
@Sindri Wenn Sie dies über die Eingabeaufforderung tun, sollte es so gut wie keine Verzögerung geben, bis das System seine Magie einsetzt. Soweit ich weiß, liegt Ihr Problem in dieser Vorverarbeitung.
NEJC