Ich mache ein Batch-Skript und ein Teil des Skripts versucht, ein Verzeichnis und alle seine Unterverzeichnisse zu entfernen. Ich erhalte die Meldung, dass ein Unterverzeichnis nicht leer ist. Ich habe einen Artikel über die Indizierung als Schuldigen gelesen. Ich habe WSearch deaktiviert, aber irgendwann wurde der Fehler erneut angezeigt.
rmdir /S /Q "C:\<dir>\"
windows
batch-file
Chaos
quelle
quelle
Antworten:
Ich habe die gleichen Probleme erlebt, die Harry Johnston erwähnt hat.
rmdir /s /q
Ich würde/s
mich beschweren, dass ein Verzeichnis nicht leer war, obwohl es das Leeren für Sie übernehmen soll! Ich denke, es ist ein Fehler in Windows, persönlich.Meine Problemumgehung besteht darin,
del
alles im Verzeichnis zu löschen, bevor ich das Verzeichnis selbst lösche:(Das
1>nul
verbirgt die Standardausgabe von,del
da sonst jede einzelne gelöschte Datei aufgelistet wird.)quelle
mydir
denselben Fehler "nicht leer" verursachten. Also musste ichcd
inmydir
und führen diedel
auf die Dateien in den einzelnen als auch diesen Verzeichnissen. Letztendlich hat es funktioniert, aber wenn ich den Vorgang ein drittes Mal auf einer anderen Unterebene hätte wiederholen müssen, hätte ich mich ziemlich besiegt gefühlt.del /s
macht es.rd /s /q mydir
Befehl.Ich bin mit diesem Problem vertraut. Die einfachste Problemumgehung besteht darin, den Vorgang unter bestimmten Bedingungen zu wiederholen. Ich habe noch nie gesehen, dass es zweimal hintereinander fehlschlägt - es sei denn, es liegt tatsächlich eine offene Datei oder ein Berechtigungsproblem vor!
quelle
IF EXIST
HäuteAccess is denied
und andere Situationen. Ich habeDIR c:\deleteme
vor allem etwas hinzugefügt und Fehler überprüft.Geben Sie die Eingabeaufforderung als Admin ein und führen Sie sie aus
quelle
Ich bin gerade auf das gleiche Problem gestoßen und es hatte damit zu tun, dass einige Dateien verloren gingen oder beschädigt wurden. Um das Problem zu beheben, führen Sie einfach check disk aus:
Dies kann über das Suchfenster oder über eine cmd-Eingabeaufforderung ausgeführt werden. Das
/F
behebt alle Probleme, die es findet, wie das Wiederherstellen der Dateien. Sobald dies abgeschlossen ist, können Sie die Dateien und Ordner wie gewohnt löschen.quelle
Ich hatte ein ähnliches Problem und versuchte, einen leeren Ordner über den Windows Explorer zu löschen. Hat mir den nicht leeren Fehler gezeigt, also dachte ich, ich versuche es über admin cmd, aber keine der Antworten hier hat geholfen.
Nachdem ich eine Datei in den leeren Ordner verschoben habe. Ich konnte den nicht leeren Ordner löschen
quelle
Wie @gfullam in einem Kommentar zur Antwort von @ BoffinbraiN feststellte, ist das, das
<dir>
Sie selbst löschen, möglicherweise nicht dasjenige, das Dateien enthält: Möglicherweise befinden sich Unterverzeichnisse, in<dir>
denen die Meldung "Das Verzeichnis ist nicht leer" angezeigt wird, und die einzige Lösung wäre dann rekursiv durch die Verzeichnisse iterieren und alle enthaltenen Dateien manuell löschen ... Am Ende entschied ich mich, einen Portrm
von UNIX zu verwenden.rm.exe
kommt mit Git Bash, MinGW, Cygwin, GnuWin32 und anderen. Sie müssen nur das übergeordnete Verzeichnis in Ihrem PATH haben und dann wie in einem UNIX-System ausführen.Beispiel für ein Stapelskript:
quelle
Was für mich funktioniert hat, ist das Folgende. Es sieht so aus, als würde der RMDir-Befehl fast immer "Das Verzeichnis ist nicht leer" ausgeben ...
quelle
In meinem Fall habe ich den Ordner einfach so in das Stammverzeichnis verschoben.
Führen Sie dann den Befehl aus, um das Verzeichnis zu entfernen
quelle
rmdir c:\<moved directory> /s /q
ist die richtige AntwortIch hatte "C: \ Benutzer \ Benutzername \ OneDrive \ Fonts", das mit "C: \ Windows \ Fonts" verknüpft war (/ D), und ich hatte das gleiche Problem. In meinem Fall
half mir. Ich hoffe, dass es Ihnen auch hilft; D.
quelle
Ähnlich wie bei Harry Johnstons Antwort mache ich eine Schleife, bis es funktioniert.
quelle
das hat bei mir funktioniert.
quelle
Der Grund, warum
rd /s
bestimmte Dateien nicht gelöscht werden, liegt höchstwahrscheinlich an READONLY-Dateiattributen für Dateien im Verzeichnis.Um dies zu beheben, müssen Sie zunächst sicherstellen, dass Sie die Attribute aller Dateien zurücksetzen:
Es können auch andere Dateien wie versteckte Dateien oder Systemdateien vorhanden sein. Wenn Sie also auf Nummer sicher gehen möchten:
quelle
rd /s
ignoriert schreibgeschützte Flags.Windows ist manchmal "von Natur aus kaputt", daher müssen Sie einen leeren Ordner erstellen und dann den "kaputten Ordner" mit einem "leeren Ordner" im Sicherungsmodus spiegeln.
Erstellen Sie ein leeres Verzeichnis wie folgt:
Überschreiben Sie einen defekten Ordner mit einem leeren Ordner wie folgt:
und löschen Sie dann diesen Ordner
Wenn dies nicht hilft, versuchen Sie, im "Wiederherstellungsmodus mit Eingabeaufforderung" neu zu starten, indem Sie beim Klicken auf "Neustart" die Umschalttaste gedrückt halten und versuchen, diesen Befehl im Wiederherstellungsmodus erneut auszuführen
quelle
/W:0
, um unnötige Verzögerungen zu vermeiden. Möglicherweise möchten Sie dies nicht,/b
da hierfür Administratorrechte erforderlich sind. Der Wiederherstellungsmodus ist für diese Frage nicht relevant, da es sich um ein Batch-Skript handelt und nicht um jemanden, der manuell versucht, ein Verzeichnis zu entfernen.Stellen Sie zunächst sicher, dass Sie als Administrator angemeldet sind. Zum Zeitpunkt des Schreibens (29. Juni 2020) habe ich auf die neueste Version von Windows 10 aktualisiert. Funktioniert
rmdir /S /Q C:\<dir>\
für mich, daher gehe ich davon aus, dass es auch für Sie funktionieren würde, wenn Sie Ihren Computer aktualisieren würden.quelle
Ich kann mir folgende mögliche Ursachen vorstellen:
Für 1.) können Sie versuchen
runas /user:Administrator
, höhere Berechtigungen zu erhalten oder die Batchdatei als Administrator über das Kontextmenü zu starten. Wenn das nicht hilft, hat vielleicht sogar der Administrator nicht die Rechte. Dann müssen Sie den Besitz des Verzeichnisses übernehmen.Um 2.) Process Explorer herunterzuladen , klicken
Find/Find handle or DLL...
oder drücken Sie Ctrl+F, geben Sie den Namen des Verzeichnisses ein und finden Sie heraus, wer es verwendet. Schließen Sie nach Möglichkeit die Anwendung, die das Verzeichnis verwendet.quelle
Dies liegt daran, dass Sie sich im Verzeichnis befinden. Stellen Sie sicher, dass sich Ihre CLI und Ihr Explorer nicht im Verzeichnis befinden. Schließen Sie alle, um sicherzugehen. Führen Sie dann als Administrator und
cd
in das übergeordnete Verzeichnis aus und führen Sie Folgendes aus:quelle