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.
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
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.
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
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"
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
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.
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"`
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ć)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
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.
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
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