So löschen Sie alle Dateien und Ordner in einem Ordner per cmd-Aufruf

Antworten:

134

Nein, ich kenne keinen.

Wenn Sie das ursprüngliche Verzeichnis aus irgendeinem Grund (ACLs usw.) beibehalten und stattdessen wirklich leeren möchten, können Sie Folgendes tun:

del /q destination\*
for /d %x in (destination\*) do @rd /s /q "%x"

Dadurch werden zuerst alle Dateien aus dem Verzeichnis entfernt und anschließend alle verschachtelten Verzeichnisse rekursiv entfernt. Insgesamt bleibt das Verzeichnis der obersten Ebene jedoch unverändert (mit Ausnahme seines Inhalts).

Beachten Sie, dass Sie innerhalb einer Batchdatei die Anzahl %innerhalb der forSchleife verdoppeln müssen :

del /q destination\*
for /d %%x in (destination\*) do @rd /s /q "%%x"
Joey
quelle
3
Ich konnte dies ohne eine Batch-Datei tun. Verwenden Sie das &&, um die beiden Operationen zu konzentrieren
Matt Broekhuis
1
Ich bin ein kompletter Windows-Shell-Neuling: Wie setze ich das Ziel mit diesem Beispiel auf einen Pfad?
low_rents
Sie ersetzen das Wort destinationdurch den Pfad und verwenden gegebenenfalls Anführungszeichen um das Ganze.
Joey
3
Diese Antwort macht mich traurig, weil es die beste Antwort ist
KCD
1
@stenci: Die zweite Zeile kann nur das angegebene Verzeichnis löschen. Dies geschieht zwar rekursiv, kann jedoch keine Datei löschen. Um alles in einem Verzeichnis zu entfernen, müssen Sie daher alle Dateien und alle Verzeichnisse entfernen. Beachten Sie, dass es nicht darum geht, ein einzelnes Verzeichnis und alles darin zu löschen. Es geht um alles innerhalb löschen und halten das übergeordnete Verzeichnis.
Joey
39

del c:\destination\*.* /s /qarbeitete für mich. Ich hoffe das funktioniert auch bei dir.

Sean
quelle
13
Löscht alle Dateien, jedoch nicht die Ordner.
Eric
2
Was für mich funktioniert hat, war zum Ordner zu navigieren. (Rechtsklick verschieben, hier del *.*
cmd-
Beispiel für relativen Pfaddel "../../server/front-end\*.*"
FindOutIslamNow
@ DanielL.VanDenBosch, das ist nicht sehr skriptfähig.
Synetech
29

Ich denke, der einfachste Weg, dies zu tun, ist:

rmdir /s /q "C:\FolderToNotToDelete\"

Das letzte "\" im Pfad ist der wichtige Teil.

Banan
quelle
26
Dadurch wird auch der Ordner selbst gelöscht.
Archie
Perfekt, das ist was ich brauche :)
gNerb
Funktioniert das rekursiv, was ist der Weg zu lang?
Eomeroff
2
Dies zu kombinieren mkdir C:\FolderToNotToDeletewar genug für mich :)
Qbolec
1
Dies kann problematisch sein, wenn Ihr übergeordneter Ordner (der auf diese Weise gelöscht wird) einige wichtige Berechtigungen enthält, die Sie jetzt neu erstellen müssen ...
Mladen B.
15

Ja! Verwenden Sie Powershell:

powershell -Command "Remove-Item 'c:\destination\*' -Recurse -Force"
Rosberg Linhares
quelle
Schade, dass PowerShell ein umständliches, aufgeblähtes, sehr langsames Tier ist. : - |
Synetech
13

Wenn die Unterordnernamen Leerzeichen enthalten können, müssen Sie sie in Anführungszeichen setzen. Das folgende Beispiel zeigt dies für Befehle, die in einer Batchdatei verwendet werden.

set targetdir=c:\example
del /q %targetdir%\*
for /d %%x in (%targetdir%\*) do @rd /s /q ^"%%x^"
Fraktor
quelle
6

So löschen Sie eine Datei:

del PATH_TO_FILE

So löschen Sie einen Ordner mit allen darin enthaltenen Dateien:

rmdir /s /q PATH_TO_FOLDER

Das Löschen aller Dateien aus einem bestimmten Ordner (nicht das Löschen des Ordners selbst) ist etwas kompliziert. del /s *.*Ordner können nicht gelöscht werden, entfernt jedoch Dateien aus allen Unterordnern. Es werden also zwei Befehle benötigt:

del /q PATH_TO_FOLDER\*.*
for /d %i in (PATH_TO_FOLDER\*.*) do @rmdir /s /q "%i"

Sie können ein Skript erstellen, um alles, was Sie wollen (Ordner oder Datei), wie folgt zu löschen mydel.bat:

@echo off
setlocal enableextensions

if "%~1"=="" (
    echo Usage: %0 path
    exit /b 1
)

:: check whether it is folder or file
set ISDIR=0
set ATTR=%~a1
set DIRATTR=%ATTR:~0,1%
if /i "%DIRATTR%"=="d" set ISDIR=1

:: Delete folder or file
if %ISDIR%==1 (rmdir /s /q "%~1") else (del "%~1")
exit /b %ERRORLEVEL%

Einige Anwendungsbeispiele:

mydel.bat "path\to\folder with spaces"
mydel.bat path\to\file_or_folder
Maxim Suslov
quelle
1

Eine einfache einzeilige Option besteht darin, irgendwo in Ihrem Dateisystem ein leeres Verzeichnis zu erstellen und dann mit dem Schalter ROBOCOPY( http://technet.microsoft.com/en-us/library/cc733145.aspx ) /MIRalle Dateien und zu entfernen Unterordner. Standardmäßig kopiert Robocopy die Sicherheit nicht, daher sollten die ACLs in Ihrem Stammordner intakt bleiben.

Wahrscheinlich möchten Sie auch einen Wert für den Wiederholungsschalter festlegen /r, da die Standardanzahl der Wiederholungsversuche 1 Million beträgt.

robocopy "C:\DoNotDelete_UsedByScripts\EmptyFolder" "c:\temp\MyDirectoryToEmpty" /MIR /r:3
BateTech
quelle
0

Ich hatte einen Indexordner mit 33 Ordnern, in denen alle Dateien und Unterordner entfernt werden mussten. Ich habe eine Befehlszeile im Indexordner geöffnet und dann die folgenden Befehle verwendet:

for /d in (*) do rd /s /q "%a" & (
md "%a")

Ich habe sie in zwei Zeilen unterteilt (drücken Sie die Eingabetaste nach der ersten Zeile und wenn Sie nach mehr gefragt werden, fügen Sie die zweite Zeile hinzu), da dies bei einer Eingabe in einer einzelnen Zeile möglicherweise nicht funktioniert. Dieser Befehl löscht jedes Verzeichnis und erstellt dann ein neues, das leer ist. Dadurch werden alle Dateien und Unterblätter im ursprünglichen Verzeichnis entfernt.

Ynotinc
quelle
0

Es dauert 2 einfache Schritte. [/ q bedeutet leise, / f bedeutet gezwungen, / s bedeutet subdir]

  1. Leeren Sie das zu entfernende Verzeichnis

    del *.* /f/s/q  
    
  2. Entfernen Sie das Verzeichnis

    cd ..
    rmdir dir_name /q/s
    

Siehe Bild

Jenna Leaf
quelle
0

Versuchen Sie dies, dies durchsucht alle MyFolder unter dem Stammverzeichnis und löscht alle Ordner mit dem Namen MyFolder

for /d /r "C:\Users\test" %%a in (MyFolder\) do if exist "%%a" rmdir /s /q "%%a"
Shailesh Tiwari
quelle