it-swarm.com.de

Wie lösche ich leere Ordner mit der Windows-Eingabeaufforderung?

Ich muss alle leeren Ordner mit der Windows-Eingabeaufforderung aus meinem Anwendungsordner löschen?

Wie kann ich eine Fledermaus-Datei erstellen?

Bitte hilf mir.

65
learner
for /f "usebackq" %%d in (`"dir /ad/b/s | sort /R"`) do rd "%%d"

von: http://blogs.msdn.com/b/oldnewthing/archive/2008/04/17/8399914.aspx

Natürlich würde ich es zuerst testen, ohne es zu löschen, bevor ich diesen Befehl ausführte. Hier ist auch eine modifizierte Version aus den Kommentaren, die Ordner mit Leerzeichen enthält:

 for /f "usebackq delims=" %%d in (`"dir /ad/b/s | sort /R"`) do rd "%%d"

P.S. Der Blogbeitrag enthält weitere Kommentare, die Ihnen möglicherweise helfen, lesen Sie sich diese auch durch, bevor Sie dies ausprobieren

49
corroded

Sie können ROBOCOPY verwenden. Es ist sehr einfach und kann auch zum Löschen leerer Ordner innerhalb einer großen Hierarchie verwendet werden.

ROBOCOPY folder1 folder1 /S /MOVE

Quelle und Ziel sind hier folder1, da Sie nur leere Ordner löschen müssen, anstatt andere (erforderliche) Dateien in andere Ordner zu verschieben. Die /S-Option besteht darin, leere Ordner zu überspringen (in diesem Fall zu verschieben). Es ist auch schneller, da die Dateien innerhalb desselben Laufwerks verschoben werden.

112
Varun Sharma

Einfacher ist es, xcopy zu verwenden, um eine Kopie der gesamten Verzeichnisstruktur mit dem Schalter/s zu erstellen. Hilfe für/s sagt, kopiert Verzeichnisse und Unterverzeichnisse mit Ausnahme leerer Verzeichnisse.

xcopy dirA dirB /S

wo dirA ist Quelle mit leeren Ordnern. DirB ist die Kopie ohne leere Ordner

56
Dinesh Rajan

Sie brauchen kein usebackq:

FOR /F delims^= %%A IN ('DIR/AD/B/S^|SORT/R') DO RD "%%A"
15
tomasz86

Der korrodierten Antwort von derselben Seite, auf die verwiesen wird, wird eine PowerShell-Version hinzugefügt http://blogs.msdn.com/b/oldnewthing/archive/2008/04/17/8399914.aspx#8408736

Get-ChildItem -Recurse . | where { $_.PSISContainer -and @( $_ | Get-ChildItem ).Count -eq 0 } | Remove-Item

oder knapper

gci -R . | where { $_.PSISContainer -and @( $_ | gci ).Count -eq 0 } | ri

gutschrift geht an den Autor des Beitrags

8
BozoJoe

von der Befehlszeile aus: für/R/D% 1 in (*) rd "% 1"

in einer Batchdatei für/R/D %% 1 in (*) do rd "%% 1"

Ich weiß nicht, ob es als solches dokumentiert ist, aber es funktioniert in W2K, XP und Win 7. Und ich weiß nicht, ob es immer funktionieren wird, aber es wird niemals versehentlich Dateien löschen.

Dies ist eine Mischung aus den oben genannten. Es entfernt ALLE Dateien, die älter als X Tage sind, und entfernt alle leeren Ordner für den angegebenen Pfad. Stellen Sie einfach die Tage, den Ordnerpfad und das Laufwerk ein

@echo off
SETLOCAL
set days=30
set folderpath=E:\TEST\
set drive=E:

::Delete files
forfiles -p %folderpath% -s -d -%days% -c "cmd /c del /q @path "

::Delete folders
cd %folderpath%
%drive%
for /f "usebackq delims=" %%d in (`"dir /ad/b/s | sort /R"`) do rd "%%d"`
2
jcwhall

Installieren Sie einen beliebigen UNIX-Interpreter für Windows (Cygwin oder Git Bash) und führen Sie die Cmd aus:

find/path/to/verzeichnis -empty -type d 

To find them

find/path/to/verzeichnis -empty -type d -delete 

To delete them

(nicht wirklich mit der Windows-Eingabeaufforderung von cmd, aber es ist einfach und dauerte einige Sekunden)

1
GreAce
@echo off
set /p "ipa= ENTER FOLDER NAME TO DELETE> "
set ipad="%ipa%"
IF not EXIST %ipad% GOTO notfound
IF EXIST %ipad% GOTO found
:found
echo DONOT CLOSE THIS WINDOW
md ccooppyy
xcopy %ipad%\*.* ccooppyy /s > NUL
rd %ipad% /s /q
ren ccooppyy %ipad%
cls
echo SUCCESS, PRESS ANY KEY TO EXIT
pause > NUL
exit 
:notfound
echo I COULDN'T FIND THE FOLDER %ipad%
pause
exit
0
PRADEESH

Es wird gut gearbeitet. Dies ist der beste Weg, um alte Dateien zu löschen und leere Verzeichnisse rekursiv zu entfernen. Die folgende .bat-Datei lautet: 

forfiles /p [PATH] /s /m [FILE-PATTERN] /d -[DAYS] /c "cmd /c del @path"
for /f "delims=" %%d in ('dir [PATH] /s /b /ad ^| sort /r') do rd "%%d"

Die Platzhalter müssen wie folgt ersetzt werden (ohne Anführungszeichen):

[DAYS] = Max. age of the files in days, e.g. “10”
[PATH] = Path to search for old files and empty folders, e.g. “C:\Backup\”
[FILE-PATTERN] = Pattern that matches files to delete, e.g. “*.bkp”

Das Skript wurde erfolgreich unter Windows 7 und Windows Server 2003 getestet.

0
sathish anish