Ich muss einen Ordner löschen, der andere Ordner und Dateien enthält. Ich habe versucht del
und rmdir
Befehle, aber manchmal scheitern sie mit einigen Fehlerzeilen:[PATH]: The directory isn't empty.
Gibt es eine gute Alternative?
windows
command-line
Francesco Zanini
quelle
quelle
Antworten:
Das passiert mir oft mit meinen automatisierten Build-Skripten.
Ich denke, der Grund könnte eine Anwendung sein, in der eine Datei mit "share delete" in diesem Verzeichnis geöffnet ist. Dh die Anwendung erlaubt das Löschen der Datei (weshalb der DeleteFile-Aufruf meines Erachtens nicht fehlschlägt), aber die Datei verschwindet erst, nachdem die Anwendung ihr Handle geschlossen hat.
Das bedeutet, dass die Datei möglicherweise noch vorhanden ist, wenn der
rmdir
Befehl versucht, den Ordner zu löschen, daher die Fehlermeldung. Kurz danach schließt die Anwendung das Handle, die Datei verschwindet und wenn Sie den Ordner überprüfen, um festzustellen, von welcher Dateirmdir
die Rede war, ist sie leer.Zumindest ist das meine Theorie.
Die von Harry Johnston vorgeschlagene Problemumgehung sieht gut aus. Nur ich würde eine Pause zwischen den
rmdir
Befehlen einfügen . Natürlich hat Windows keinen leicht skriptfähigen "Pause" -Befehl (Korrektur: Alte Windows-Versionen haben das nicht, neuere - siehe Kommentare). Wenn jedoch die Granularität von Sekunden ausreicht, kannping
eine Pause erstellt werden:Also insgesamt:
quelle
rm -rf /directory/
sollte auf allen Betriebssystemen global sein.timeout /t 3
pause
Befehl nicht).Versuchen:
oder:
um Bestätigungsnachrichten zu überspringen.
quelle
del
undrmdir
nichts fragte, sendeten sie nur einige Zeilen wie die in der Beschreibung.rmdir /s
löscht alles, was gelöscht werden kann. Möglicherweise verfügen Sie über Dateien, die von einem Programm gesperrt wurden, schreibgeschützte Dateien oder Dateien, für deren Löschen Sie Administratorrechte benötigen. Es gibt keinen einzigen Befehl, der all diese Situationen für SieMöglicherweise verfügen Sie über schreibgeschützte Dateien. Sie können die Option del / F verwenden, um sie mithilfe von zu entfernen
Sie könnten auch versteckte Dateien haben und wenn Sie wirklich sicher sind, dass Sie diese löschen möchten, können Sie dies mit tun
Wenn dies weiterhin fehlschlägt, haben Sie entweder keine Berechtigung zum Löschen einiger Dateien, oder einige der Dateien werden noch verwendet.
quelle
Ich glaube, es gibt einen Fehler in Windows 7 (und möglicherweise in anderen Versionen), der manchmal dieses Symptom verursacht. oder es könnte ein Fehler in Software von Drittanbietern sein. (Haben Sie Symantec Endpoint Protection zufällig installiert?)
Jedenfalls bin ich ziemlich oft darauf gestoßen. In den meisten Fällen kann das Problem durch
rd /s /q
zwei- oder dreimaliges Ausführen in Folge behoben werden.Wenn dies in einer Batch-Datei ist, können Sie so etwas tun:
quelle
Verwenden Sie
del
für die Dateien im Inneren,rmdir
um den Ordner zu entfernen.Um die
rmdir
Methode auch zum Entfernen aller Dateien zu verwenden, verwenden Sie die/S
Option vor dem Verzeichnisnamen und/Q
unterdrücken Sie die Aufforderung zum Löschen. Dies ist der beste Weg, da Sie keinerlei Dateien verpassen. Seien Sie jedoch vorsichtig bei der Verwendung der Option / Q, da Sie sonst nicht vor System- oder versteckten Dateiattributen gewarnt werdenquelle
Wenn Sie node verwenden , können Sie die rimraf- Abhängigkeit folgendermaßen verwenden:
Führen Sie install aus:
npm install rimraf -g
lösche Ordner:
rimraf SourceFolder
Dies hat mir geholfen, als ich den Fehler erhielt:
quelle
Ordner ältere Versionen von Windows (DOS, Windows 95/98 / ME),
DELTREE
entsprichtRM
oderRMDIR
. Ich verwendeDELTREE
auf meiner Windows 7-Workstation in Batch-Dateien nur in Ordnung.quelle
Ich denke, Sie können es so verwenden:
quelle