Löschen Sie einen Ordner in Windows mithilfe der Befehlszeile vollständig

Ich muss einen Ordner löschen, der andere Ordner und Dateien enthält. Ich habe die Befehle del und rmdir ausprobiert, aber manchmal schlagen sie mit einigen Fehlerzeilen fehl: [PATH]: The directory isn't empty.

Gibt es eine gute alternative?

Author: Francesco Zanini, 2013-01-17

8 answers

Das passiert mir oft mit meinen automatisierten Build-Skripten.

Ich denke, der Grund könnte eine Anwendung sein, bei der eine Datei in diesem Verzeichnis mit "share delete"geöffnet ist. Dh die Anwendung ermöglicht das Löschen der Datei (weshalb ich feststelle, dass der DeleteFile-Aufruf 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 Befehl rmdir versucht, den Ordner zu löschen, daher die Fehlermeldung. Kurz danach schließt die Anwendung ihr Handle, die Datei verschwindet, und wenn Sie den Ordner überprüfen, um zu sehen, welche Datei rmdir darüber gesprochen hat, ist sie leer.

Zumindest ist das meine Theorie.

Die von Harry Johnston vorgeschlagene Problemumgehung sieht gut aus. Nur würde ich eine Pause zwischen den Befehlen rmdir einfügen. Natürlich hat Windows keinen leicht skriptfähigen" Pause " - Befehl (Korrektur: alte Windows-Versionen nicht, neuere haben-siehe Kommentare). Aber wenn die Granularität ist genug kann man ping verwenden, um eine Pause zu erstellen:

ping -n {desired_delay_in_seconds + 1} 127.0.0.1 >nul

Also insgesamt:

rd /s /q foo
:: retry once
if exist foo (
    :: clear errorlevel
    cmd /c
    :: pause
    ping -n 2 127.0.0.1 >nul
    :: retry
    rd /s /q foo
)
:: retry yet again
if exist foo (
    cmd /c
    ping -n 2 127.0.0.1 >nul
    rd /s /q foo
)
:: give up
if exist foo {panic}
 17
Author: Paul Groke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-06-24 00:52:40

Versuche:

rmdir /S your_directory

Oder:

rmdir /S /Q your_directory 

Um Bestätigungsnachrichten zu überspringen.

 65
Author: AndrewQ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-07-16 16:30:16

Möglicherweise haben Sie einige schreibgeschützte Dateien, Sie können die Option del / F verwenden, um sie mit

     del /S /F your_directory
     rmdir your_directory

Sie könnten auch einige versteckte Dateien haben und wenn Sie wirklich sicher sind, dass Sie sie löschen möchten, können Sie dies mit

     del /S /F /AH your_directory
     rmdir your_directory

Wenn dies immer noch fehlschlägt, haben Sie entweder keine Berechtigung zum Löschen einiger Dateien oder einige der Dateien werden noch verwendet.

 12
Author: sgmoore,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-01-17 16:27:07

Ich glaube, es gibt einen Fehler in Windows 7 (und vielleicht 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 behoben werden, indem rd /s /q zwei-oder dreimal hintereinander ausgeführt wird.

Wenn sich dies in einer Batchdatei befindet, können Sie Folgendes tun:

rd /s /q foo
if exist foo rd /s /q foo
if exist foo rd /s /q foo
if exist foo echo Help! & pause
 5
Author: Harry Johnston,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-01-17 22:34:36

Verwenden Sie del für die darin enthaltenen Dateien und dann rmdir, um den Ordner zu entfernen.

Um die Methode rmdir auch zum Entfernen aller Dateien zu verwenden, verwenden Sie den Schalter /S vor dem Verzeichnisnamen und /Q, um die Aufforderung zum Löschen zu unterdrücken. Dies ist der beste Weg, da Sie keine Dateien verpassen. Seien Sie jedoch vorsichtig mit dem /Q-Schalter, da er Sie nicht vor System-oder versteckten Dateiattributen warnt

 3
Author: Canadian Luke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-01-17 17:32:53

Wenn Sie node verwenden, können Sie die Abhängigkeit rimraf wie folgt verwenden:

Führen Sie install: npm install rimraf -g

Ordner löschen: rimraf SourceFolder

Das hat mir geholfen, als ich den Fehler bekam:

Die Quelldateinamen sind größer als vom Dateisystem unterstützt

 2
Author: Dustin Spengler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-12-01 22:15:41

In älteren Windows-Versionen (DOS, Windows 95/98 / ME) entspricht DELTREE RM oder RMDIR. Ich verwende DELTREE auf meiner Windows 7-Workstation in Batch-Dateien jedoch einwandfrei.

Deletes a directory and all the subdirectories and files in it.

To delete one or more files and directories:
DELTREE [/Y] [drive:]path [[drive:]path[...]]

  /Y              Suppresses prompting to confirm you want to delete
                  the subdirectory.
  [drive:]path    Specifies the name of the directory you want to delete.

Note: Use DELTREE cautiously. Every file and subdirectory within the
specified directory will be deleted.
 0
Author: Sun,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-06-24 18:30:12

Ich denke, du kannst es so benutzen:

msg*your file is going to delete 
pause
del/s /q "C:\Users\Rd\Desktop\New folder (2)\" 
rmdir /s /q "C:\Users\Rd\Desktop\New folder (2)\"
mkdir "C:\Users\Rd\Desktop\New folder (2)"
 0
Author: Shubham Dwivedi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-05-27 15:58:51