3

Как я могу рекурсивно удалить пустые папки?

"Пустой" считается истинным , если каталог не имеет каталог и файлы не существуют бесполезные автоматически генерируемые файлы Thumbs.db .DS_Store и т.д.)

6 ответов6

5

Вот одна строка командной строки, которая удалит все фактически пустые (то есть нулевые файлы) каталог в папке и ниже:

for /f "delims=" %i in ('dir /ad /s /b') do @rd "%i"

По сути, это получает рекурсивный список всех каталогов, начиная с текущего, а затем пытается удалить каждый каталог. Команда rd по умолчанию не удаляет непустой каталог, поэтому ваши файлы должны быть в безопасности.

2

Попробуйте это: Удалить пустые каталоги - CNET Download.com

Пустые папки каталога раздражают, но не часто вызывают большую озабоченность. Тем не менее, они накапливаются со временем, и удаление пустых каталогов является разумным и быстрым решением. Крошечная программа встречает вас в основном пустой панелью и значком для понимания ваших результатов. Вверху есть диалоговое окно для указания конкретной папки или диска для поиска, хотя по умолчанию он проверяет ваш диск C.

1

Вот я удаляю пустой каталог:

C:\>md f  
C:\>rmdir f  
C:\>  

Там я создал один, а затем удалил его. Если в нем есть что-то, то оно не пустое.

Вы можете использовать rmdir /s если в нем есть что-то:

C:\>rmdir f  
The directory is not empty.  

C:\>rmdir /s f  
f, Are you sure (Y/N)? y  

C:\>

И вы можете сделать все это без командной строки.

Рекурсия - это концепция в программировании. Я не думаю, что вы имеете в виду это. И то, реализовано ли что-либо с использованием рекурсии или нет, для вас не имеет значения, поскольку, несомненно, вы не намерены ограничивать себя ... и вас не просто интересует интеллектуальная реализация.

И если у вас возникли проблемы с удалением каталога, подумайте, например, о том, какую ошибку вы получаете, когда пытаетесь удалить каталог, который вы пытаетесь удалить. Вы всегда можете загрузиться с живого CD и удалить его.

0

Бельведер может сделать это, но вам нужно быть более конкретным, чем "бесполезным", чтобы иметь возможность устанавливать правильные правила.

0

for /f "delims=" %i in ('dir /ad /s /b') do @rd "%i"

  - bobbymcr

Ответ @bobbymcr работает, однако его нужно будет запускать (n-1), умноженное на максимальную глубину каталогов, чтобы быть уверенным, что пустых каталогов нет. Это связано с тем, что for будет кормить каталоги rd в порядке убывания, каталог dir перечисляет их, пытаясь удалить родительский каталог до того, как он освободит его от дочерних.

Поскольку rd будет только удалить каталоги, которые уже пустые sort дети первыми и пустые гнезда , будут удалены из дерева в один проход.

Создайте файл [meow].bat и запустите его из каталога, который вы хотите удалить. Первый параметр - это альтернативное имя временного файла, используемое при необходимости.

:: Asserts the default tempfile name if none is specified.
IF "%1"=="" (
set __tempfile=meow.tmp
) ELSE (
set __tempfile=%1
)
echo %__tempfile%

:: Checks to see that it won't destroy an existing file
IF NOT EXIST %__tempfile% (
:: Gets list of directories in descending depth.
dir /ad /b /s > %__tempfile%
:: Removes empty directories specified in the list sorted in reverse order
for /f "delims=" %%i in ('sort /R %__tempfile%') do @rd "%%i"
:: Deletes tempfile
del %__tempfile%
) ELSE (
:: if the tempfile already exists.
@ECHO Tempfile already exists, please delete %__tempfile% and try again.
)
0

Используйте командную строку из меню «Пуск / Выполнить» (или комбинацию Windows R). Напишите cmd чтобы запустить консоль, затем перейдите к диску, на котором находятся каталоги, введя букву диска (например, если они находятся на D:\ вы поставили d: .

Путь командной строки изменится на желаемый путь. Затем используйте команду cd для перехода в родительскую папку пустых каталогов (cd D:\ParentDirectory\). Вы можете использовать вкладку для Windows, чтобы поставить весь путь.

После того, как прибыл в родительский каталог использовать

del /F EmptyDirectory1

Этот метод является лучшим и также удалит папки или файлы, которые не могут быть удалены Windows Explorer.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .