Ich benutze Windows.
Ich möchte alle Dateien und Ordner in einem Ordner per Systemaufruf löschen.
Ich kann so nennen:
>rd /s /q c:\destination
>md c:\destination
Kennst du einen einfacheren Weg?
Ich benutze Windows.
Ich möchte alle Dateien und Ordner in einem Ordner per Systemaufruf löschen.
Ich kann so nennen:
>rd /s /q c:\destination
>md c:\destination
Kennst du einen einfacheren Weg?
Antworten:
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 for
Schleife verdoppeln müssen :
del /q destination\*
for /d %%x in (destination\*) do @rd /s /q "%%x"
destination
durch den Pfad und verwenden gegebenenfalls Anführungszeichen um das Ganze.
del c:\destination\*.* /s /q
arbeitete für mich. Ich hoffe das funktioniert auch bei dir.
del *.*
del "../../server/front-end\*.*"
Ich denke, der einfachste Weg, dies zu tun, ist:
rmdir /s /q "C:\FolderToNotToDelete\"
Das letzte "\" im Pfad ist der wichtige Teil.
mkdir C:\FolderToNotToDelete
war genug für mich :)
Ja! Verwenden Sie Powershell:
powershell -Command "Remove-Item 'c:\destination\*' -Recurse -Force"
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^"
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
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 ) /MIR
alle 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
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.
Navigieren Sie zum übergeordneten Verzeichnis
Löschen Sie die Unterordner
/superuser/173859/how-can-i-delete-all-files-subfolders-in-a-given-folder-via-the-command-prompt
pushd
, müssen Sie auch verwenden popd
. Funktioniert leider popd
nicht, wenn Sie das Verzeichnis löschen. Also musst du cd
stattdessen tun pushd
.
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"