Rekursiv leere Verzeichnisse in Windows löschen
Ich habe ein Verzeichnis auf meinem Windows 7-Computer mit Hunderten, wenn nicht Tausenden von Unterverzeichnissen. Einige von ihnen haben Dateien, andere nicht. Ich möchte alle leeren Verzeichnisse löschen.
Wenn Sie sich den DOS-Befehl del und rmdir ansehen, sieht es nicht so aus, als könnten Sie dies rekursiv tun, ohne alle Dateien zu löschen. Gibt es eine Möglichkeit, dies über die Befehlszeile zu tun?
11 answers
Sie können Leere Verzeichnisse entfernen Dienstprogramm.
Alternativ können Sie diese einzeilige Batch-Datei verwenden (von DownloadSquad):
for /f "delims=" %d in ('dir /s /b /ad ^| sort /r') do rd "%d"
(wenn Sie in einer Batchdatei verwendet werden, ersetzen Sie %d
durch %%d
)
Dies funktioniert, weil rd
kein Verzeichnis entfernt, das Dateien enthält.
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-10-13 19:28:00
Sie können auch ROBOCOPY verwenden. Es ist sehr einfach und kann auch verwendet werden, um leere Ordner in großen Hierarchien zu löschen.
ROBOCOPY folder1 folder1 /S /MOVE
Hier sind sowohl Quelle als auch Ziel folder1
, da Sie nur leere Ordner löschen müssen, anstatt andere Dateien in einen anderen Ordner zu verschieben. Die Option /S
besteht darin, das Kopieren(Verschieben, im obigen Fall) leerer Ordner zu überspringen. Es ist auch schneller, da die Dateien auf demselben Laufwerk verschoben werden.
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
2015-09-13 10:25:42
Da Cygwin mit GNU find geliefert wird, können Sie Folgendes tun:
find . -type d -empty -delete
Oder um das Rauschen zu vermeiden, wenn ein Ordner nicht mehr existiert:
find . -type d -empty -execdir rmdir {} +
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
2011-06-16 01:34:49
Das kostenlose Dienstprogramm EmptyFolderNuker funktioniert einwandfrei aus einem Basisordner Ihrer Wahl. Es entfernt auch die Verzeichnisse, die nur leere Unterverzeichnisse enthalten.
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
2019-08-12 19:48:12
Hmmm... vielleicht noch einfachere Lösung:
for /d /r %d in (*.*) do rd "%d"
Starten Sie dies aus dem Ordner, in dem leere Ordner gelöscht werden sollen.
/ d - funktioniert in Ordnern, nicht in Dateien /r-wird subdirs
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-09-02 23:41:02
Wenn SieCygwin installiert haben, können Sie Folgendes tun:
find -type d -exec rmdir {} \;
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
2009-09-11 21:50:13
Wenn Sie in Emacs arbeiten (diese plattformunabhängig machen), funktioniert Folgendes:
(defun *-delete-empty-directories (root-directory)
"Recursively delete empty directories in ROOT-DIRECTORY.
When called from dired, `dired-current-directory' is used for
ROOT-DIRECTORY."
;; Interface
(interactive (list (if (eq major-mode 'dired-mode)
(expand-file-name (dired-current-directory))
(read-from-minibuffer "Root directory: "))))
(when (or (null root-directory) (string= "" root-directory))
(user-error "No root directory provided"))
(when (called-interactively-p 'interactive)
(unless (yes-or-no-p (format "Delete all non-empty directories in `%s'? "
root-directory))
(user-error "Directory `%s' has been left untouched" root-directory)))
;; Implementation
(require 'f)
(let ((entries (f-directories root-directory)))
(while entries
(let ((curdir (car entries)))
(when (f-directories curdir)
(*-delete-empty-directories curdir))
(unless (f-entries curdir)
(delete-directory curdir)
(message "Directory deleted: `%s'" curdir))
(setq entries (cdr entries)))))
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
2015-05-06 15:19:25
Die Kombination von Gareth und G-Man ' s Beiträge:
find . -depth -type d -empty -execdir rmdir {} +
Bearbeiten: Aber das gab einen Sicherheitsfehler wegen 'C' in meinem PFAD var...so stattdessen:
$find . -depth -type d -empty | while read dir; do (rmdir -v $dir); done
Ich benutze xargs nicht, weil es ein Eingabezeilenlimit zu haben scheint (von ungefähr 1024 Zeilen, denke ich?), während
while read x; do (command $x); done
Macht einfach weiter, solange es Eingaben hat. Lassen Sie das ausführliche Flag '-v' aus, wenn Sie die Ergebnisse nicht sehen und/oder schneller ausführen möchten.
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-04-03 09:31:52
Keine der vorherigen Antworten funktionierte für mich, also habe ich die folgende Datei erstellt:
EmptyDirectoriesRemove.cmd
Inhalt: -
@setlocal enableextensions enabledelayedexpansion
:walk_tree
for /D %%d in (*) do (
cd %%d
@CALL :walk_tree %%d
cd ..
rd %%d
)
endlocal
Verwendung: Cd in das Verzeichnis der obersten Ebene, das Sie bereinigen möchten. Führen Sie an der Eingabeaufforderung der Befehlszeile Folgendes aus:
EmptyDirectoriesRemove.cmd -
Warnungen werden für nicht leere Verzeichnisse angezeigt.
Übliche Haftungsausschlüsse: Verwenden Sie auf Ihre Gefahr. Backup vor dem Testen. etc.
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
2019-12-13 04:09:18
Die 4NT Shell (heutzutage Take Command) hat eine /sx Option zu "DEL". /S ist rekursiv, das angehängte X ist leere Verzeichnisse entfernen.
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
2020-01-10 08:31:27
Sie können Powershell verwenden:
Get-ChildItem "Path" -recurse |
Where-Object {($_.PSIsContainer -eq $true) -and ((gci $_.fullName).count -eq 0)} |
Remove-Item -Force
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
2020-09-16 09:23:35