Jak usunąć puste foldery za pomocą wiersza polecenia systemu windows?

Muszę usunąć wszystkie puste foldery z folderu aplikacji za pomocą wiersza polecenia systemu windows?

Jak mogę utworzyć taki plik bat?

Proszę pomóż mi.

Author: Brian Tompsett - 汤莱恩, 2011-10-20

11 answers

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

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

Oczywiście najpierw przetestowałbym go bez usuwania, zanim wykonam tę komendę. Ponadto, oto zmodyfikowana wersja z komentarzy, która zawiera foldery ze spacjami:

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

P. S. jest więcej komentarzy w poście na blogu, które mogą Ci pomóc, więc przeczytaj je, zanim wypróbujesz to

 49
Author: corroded,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-16 13:52:18

Możesz użyć ROBOCOPY. Jest to bardzo proste i może być również używane do usuwania pustych folderów wewnątrz dużej hierarchii.

ROBOCOPY folder1 folder1 /S /MOVE

Tutaj zarówno źródło, jak i miejsce docelowe są folder1, ponieważ wystarczy usunąć puste foldery, zamiast przenosić inne (wymagane) pliki do innego folderu. /S opcją jest pominięcie kopiowania (przenoszenia - w powyższym przypadku) pustych folderów. Jest to również szybsze, ponieważ pliki są przenoszone na ten sam dysk.

 101
Author: Varun Sharma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-27 12:23:59

Prostszym sposobem jest zrobienie xcopy kopii całej struktury katalogów za pomocą przełącznika /S. pomoc dla /s mówi, że kopiuje katalogi i podkatalogi poza pustymi.

xcopy dirA dirB /S

Gdzie dirA jest źródłem z pustymi folderami. DirB będzie kopią Bez pustych folderów

 54
Author: Dinesh Rajan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-07 03:03:44

You don ' t need usebackq:

FOR /F delims^= %%A IN ('DIR/AD/B/S^|SORT/R') DO RD "%%A"
 14
Author: tomasz86,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-08 10:29:24

Dodanie odpowiedzi z tej samej strony to wersja PowerShell 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

Lub, bardziej treściwie,

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

Kredyt idzie do autora postu

 6
Author: BozoJoe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-08 05:11:15

Z linii poleceń: for / R / D %1 in ( * ) do rd "%1 "

W pliku wsadowym for / R / D % % 1 in ( * ) do rd "%%1 "

Nie wiem czy jest to udokumentowane jako takie, ale działa w W2K, XP i Win 7. I nie wiem, czy zawsze będzie działać, ale nigdy nie usunie plików przez przypadek.

 3
Author: Oglethorpe Cadwallader,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-04 19:22:49

Jest to hybryda z powyższego. Usuwa wszystkie pliki starsze niż X dni i usuwa wszystkie puste foldery dla danej ścieżki. Aby użyć po prostu ustaw dni, folderpath I drive

@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
Author: jcwhall,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-27 11:02:13

Zainstaluj dowolny interpreter Uniksa Dla windows (Cygwin lub Git Bash) i uruchom cmd:

Find / path / to / directory-empty-type d

To find them

Find / path / to / directory-empty-type d-delete

To delete them
[[2]}(nie za pomocą okna cmd prompt, ale to proste i zajęło kilka sekund, aby uruchomić)
 0
Author: GreAce,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-02 06:05:41
@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
Author: PRADEESH,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-15 13:01:03

To będzie działać dobrze. Jest to najlepszy sposób na rekurencyjne usuwanie starych plików i pustych katalogów. podążam .plik bat jest,

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"

Symbole zastępcze należy zastąpić w następujący sposób (bez cudzysłowów):

[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”

Skrypt został pomyślnie przetestowany pod Windows 7 i Windows Server 2003.

 0
Author: sathish anish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-07 06:20:47

Cóż, tylko szybka i brudna sugestia dla prostej 1-poziomowej struktury katalogów bez spacji, [Edytuj] i dla katalogów zawierających tylko jeden typ plików, który uznałem za przydatny (w pewnym momencie z http://www.pcreview.co.uk/forums/can-check-if-folder-empty-bat-file-t1468868.html):

for /f %a in ('dir /ad/b') do if not exist %a\*.xml echo %a Empty

/ ad: pokazuje tylko wpisy w katalogu
/b: use bare format (just names)

[edytuj] użycie zwykłej gwiazdki do sprawdzenia dowolnego pliku (%a\* powyżej) nie zadziała, dzięki za korekta

Dlatego usunięcie byłoby:

for /f %a in ('dir /ad/b') do if not exist %a\*.xml rmdir %a
 -1
Author: hello_earth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-17 09:18:19