it-swarm.com.de

Batchdatei Löschen Sie alle Dateien und Ordner in einem Verzeichnis

Ich möchte eine Batch-Datei haben, die alle Ordner und Dateien in meinem Cache-Ordner für mein drahtloses Toolkit löscht.

Zur Zeit habe ich folgendes:

cd "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS"
del *.db

Dadurch werden alle .db-Dateien in meinem Verzeichnis RMS gelöscht. Ich möchte jedoch jedes einzelne Objekt aus diesem Verzeichnis löschen

Kannst du mir helfen? Vielen Dank.

118
user69514

del *.* statt del *.db. Das wird alles entfernen.

44
Jon Martin

Erstellen Sie eine Batchdatei

kopiere den Text in die Batchdatei

set folder="C:\test"
cd /d %folder%
for /F "delims=" %%i in ('dir /b') do (rmdir "%%i" /s/q || del "%%i" /s/q)

Löscht alle Dateien und Ordner

143
morty346
IF EXIST "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS" (
    rmdir "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS" /s /q
)

Dadurch wird alles aus dem Ordner (und dem Ordner selbst) gelöscht.

29
psych

del *.* löscht nur Dateien, jedoch keine Unterverzeichnisse. Um den Inhalt eines Verzeichnisses zu nuken, können Sie dieses Skript verwenden:

@echo off
setlocal enableextensions
if {%1}=={} goto :HELP
if {%1}=={/?} goto :HELP
goto :START

:HELP
echo Usage: %~n0 directory-name
echo.
echo Empties the contents of the specified directory,
echo WITHOUT CONFIRMATION. USE EXTREME CAUTION!
goto :DONE

:START
pushd %1 || goto :DONE
rd /q /s . 2> NUL
popd

:DONE
endlocal
13
Bill_Stewart

Stellen Sie einfach das zusammen, was morty346 gepostet hat:

set folder="C:\test"
IF EXIST "%folder%" (
    cd /d %folder%
    for /F "delims=" %%i in ('dir /b') do (rmdir "%%i" /s/q || del "%%i" /s/q)
)

Fügt eine schnelle Überprüfung hinzu, dass der in der Variablen definierte Ordner zuerst vorhanden ist, wechselt dann das Verzeichnis in den Ordner und löscht den Inhalt.

11
Fantus_Longhorn

Sie können dies mit del und dem /S-Flag tun (damit alle Dateien aus allen Unterverzeichnissen erneut abgerufen werden):

del /S C:\Path\to\directory\*

Der RD-Befehl kann ebenfalls verwendet werden. Löschen Sie rekursiv ohne Eingabeaufforderung

@RD /S /Q %VAR_PATH%

https://technet.Microsoft.com/de-de/library/bb490990.aspx

9
PodTech.io
set "DIR_TO_DELETE=your_path_to_the_folder"

IF EXIST %DIR_TO_DELETE% (
    FOR /D %%p IN ("%DIR_TO_DELETE%\*.*") DO rmdir "%%p" /S /Q
    del %DIR_TO_DELETE%\*.* /F /Q
)
5
Cristian Tetic

Probieren Sie dies aus, es funktioniert für mich, ich habe eine Anwendung, die Daten in meinem Ordner "C:\tmp" speichert. Folgendes funktioniert am besten für mich. Es werden nicht einmal Ja oder Nein gefragt, ob ich die Daten löschen möchte ein Zeitplan für die Ausführung nach 5 Minuten

cd "C:\tmp"

del *.* /Q
4
poorvesh

Sie können robocopy verwenden, um einen leeren Ordner in den Ordner zu spiegeln, den Sie löschen.

robocopy "C:\temp\empty" "C:\temp\target" /E /MIR

Es funktioniert auch, wenn Sie den eigentlichen Ordner nicht entfernen oder neu erstellen können.

Es ist ein leeres Verzeichnis erforderlich.

2
Aaron

Besser noch, sagen wir, ich möchte alles unter dem Ordner c:\windows\temp entfernen.

@echo off
rd c:\windows\temp /s /q
2
user3788752

Benutzen

set dir="Your Folder Path Here"
rmdir /s %dir%
mkdir %dir%

Diese Version löscht ohne zu fragen:

set dir="Your Folder Here"
rmdir /s /q %dir%
mkdir %dir%

Beispiel:

set dir="C:\foo1\foo\foo\foo3"
rmdir /s /q %dir%
mkdir %dir%

Dadurch wird C:\foo1\foo\foo\foo3 gelöscht.

Ich möchte @Abdullah Sabouin mit dieser Antwort erwähnen https://stackoverflow.com/a/44578851/8238944 . Es gab ein Durcheinander, weil ich ihn kopierte. Ich habe seinen Posten nicht bemerkt.

Ich möchte mich bei @melpomene für den Hinweis auf Fehler bedanken!

Eine modifizierte Version von https://stackoverflow.com/users/478183/morty346 answer

set folder="C:\test"
cd /D %folder%
if NOT %errorlevel% == 0 (exit /b 1)
echo entire content of %cd% will be deleted, press Ctrl-C to abort
pause
REM first the directories /ad option of dir
for /F "delims=" %%i in ('dir /b /ad') do (echo rmdir "%%i" /s/q)
REM now the files /a-d option of dir
for /F "delims=" %%i in ('dir /b /a-d') do (echo del "%%i" /q)
REM to deactivate simulation mode remove the Word echo before rmdir and del
0
grenix

Sie können nicht alles mit rmdir oder del alleine löschen:

  • rmdir /s /q akzeptiert keine Platzhalterzeichen. rmdir /s /q * wird also fehlerhaft sein.
  • del /s /f /q löscht alle Dateien, leere Unterverzeichnisse bleiben jedoch erhalten.

Meine bevorzugte Lösung (wie ich sie in vielen anderen Batch-Dateien verwendet habe) ist:

rmdir /s /q . 2>NUL
0
butfly