Перейти к содержанию

Как автоматически удалить пустые папки в Windows

Со временем на вашем жестком диске могут появиться сотни пустых папок и ненужных файлов. Хотя ненужные файлы занимают место на диске и могут быть очищены с помощью настроек «Очистка диска» или «Хранилище», пустые каталоги остаются.if(typeof __ez_fad_position!=’undefined’){__ez_fad_position(‘div-gpt-ad-winhelponline_com-medrectangle-3-0′)};if(typeof __ez_fad_position!=’undefined’){__ez_fad_position(‘div-gpt-ad-winhelponline_com-box-3-0’)};

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

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

СОДЕРЖАНИЕ

  1. Удалите пустые папки с помощью функции «Найти пустые файлы и папки».
  2. Удалите пустые папки с помощью команд For и rd
  3. Удалите пустые папки с помощью Robocopy
  4. Удалите пустые папки с помощью PowerShell
  5. Удалите пустые папки с помощью сценариев Windows
  6. Удалите пустые папки с помощью DelEmpty.exe

Как найти и удалить пустые папки в Windows?

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

Важно: запускать автоматизированный инструмент или пакетный файл для рекурсивного удаления пустых папок на всем системном диске обычно не рекомендуется. Это связано с тем, что некоторые программы могут не работать и вызывать странную ошибку, когда обнаруживается, что отсутствует важная папка. Как всегда, применяется стандартное предупреждение. Перед тем, как приступить к работе с файловой системой или реестром Windows, убедитесь, что у вас есть соответствующие резервные копии, желательно на внешнем диске.if(typeof __ez_fad_position!=’undefined’){__ez_fad_position(‘div-gpt-ad-winhelponline_com-box-4-0’)};

СВЯЗАННЫЕ: рекурсивный поиск и удаление 0-байтовых файлов в папке в Windows.

if(typeof __ez_fad_position!=’undefined’){__ez_fad_position(‘div-gpt-ad-winhelponline_com-medrectangle-4-0’)};

Давайте начнем с удобного графического интерфейса пользователя, за которым последуют собственные методы командной строки и сценарии.

1. Удалите пустые папки с помощью утилиты «Найти пустые файлы и папки».

Find Empty Files-n-Folders — отличный инструмент, который может рекурсивно находить и удалять пустые файлы (0-байтовые) и пустые папки в дереве папок.

  1. Загрузите Find Empty Files-n-Folders (установщик 600 КБ) с сайта Ashisoft.com.
  2. Выберите папку и нажмите Сканировать сейчас.
    удалить пустые папки в windows
    Инструмент отобразит пустые файлы и папки на отдельных вкладках.
  3. Щелкните Отметить все папки, а затем щелкните Удалить папки.
    удалить пустые папки в windows
    Точно так же, если вы хотите удалить 0-байтовые файлы в выбранном дереве папок, щелкните вкладку «Пустые файлы».

На Ashisoft.com есть и другие замечательные инструменты, которые вы можете попробовать!

2. Удалите пустые папки с помощью команд «for» и «rd».

Вы можете использовать внутренние команды командной строки для а также rd чтобы пронумеровать список папок и удалить пустые.

  1. Нажмите и удерживайте Сдвиг , щелкните папку правой кнопкой мыши и выберите Открыть командное окно здесь. Это открывает командную строку в текущем местоположении папки, что также можно проверить в консоли.Примечание. Убедитесь, что вы запускаете следующую команду, используя точный путь к родительской папке, в которой вам нужно найти и удалить пустые подпапки.
  2. Как только вы окажетесь в нужном каталоге в командной строке, запустите эту командную строку:
    for / f "delims ="% i in ('dir / s / b / ad ^ | sort / r') do rd "% i" 2> NUL (или) for / f "usebackq delims ="% i in (`" dir / s / b / ad | sort / r "`) do rd "% i" 2> NUL

    удалить пустые папки с помощью команды for и rd - batch

    Это удаляет все пустые каталоги в подкаталогах из пути к базовой папке, включая вложенные пустые папки.

    Если вы собираетесь использовать указанную выше команду в пакетном файле, замените %я с участием %%я.

значок предупреждения осторожноВажно: приведенная выше команда не удаляет папки с иностранными символами, например, 蜍 穂. Вы можете проверить DelEmpty.exe (описанный в этой статье) или другие методы для удаления папок с символами Unicode.

Вышеупомянутая командная строка любезно предоставлена ​​Раймондом Ченом из Microsoft через его блог The Old New Thing. В этом посте командная строка Раймонда была немного изменена, теперь она также удаляет имена папок, содержащие пробелы.if(typeof __ez_fad_position!=’undefined’){__ez_fad_position(‘div-gpt-ad-winhelponline_com-banner-1-0’)};

Как работает команда

Приведенная выше команда перечисляет все подкаталоги (рекурсивно) в текущем базовом пути и сортирует список (sort / r) в обратном порядке. Сортировка в обратном порядке должна гарантировать, что перечисление выполняется снизу вверх. Это важно для удаления пустых каталогов, так как вы должны удалить подкаталоги перед удалением родительского.

Затем он пытается удалить список каталогов (в обратном порядке сортировки), используя RD команда. Если каталог не пуст, он переходит к следующему каталогу и так далее. В 2> NUL Команда гарантирует, что выходной текст «каталог не пуст» подавлен.

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

Найдите пустые папки, но не удаляйте

Чтобы найти только пустые папки, не удаляя их, используйте следующий синтаксис командной строки:

для / r "D: \ uploads \ 2019" / d% F в (.) do @dir / b "% F" | findstr "^"> nul || эхо% ~ fF

Он показывает вам вывод, содержащий список пустых каталогов.

список пустых папок - командная строка

Допустим, у вас есть пустые вложенные папки, например:if(typeof __ez_fad_position!=’undefined’){__ez_fad_position(‘div-gpt-ad-winhelponline_com-leader-1-0’)};

C: \ 1 └───2 └───3 └───4

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

3. Найдите и удалите пустые папки с помощью Robocopy.

Robocopy — это мощный встроенный инструмент для копирования файлов с множеством дополнительных функций. Мы рассмотрели Robocopy в статье «Сравнение содержимого двух папок в Windows».

Предположим, у вас есть папка с именем машины , который содержит несколько подпапок, некоторые из которых пусты. Мы собираемся удалить пустые с помощью Robocopy.

значок рукиХитрость здесь в том, чтобы использовать команду перемещения Robocopy, передав один и тот же путь к папке как для «источника», так и для «места назначения».

  1. Откройте окно командной строки.
  2. Введите следующую команду и нажмите ВХОДИТЬ:
    robocopy "d: \ автомобильные ставки \ cars" "d: \ автомобильные ставки \ cars" / S / move

    Здесь важно отметить, что исходный и целевой пути (намеренно) совпадают. В / S Параметр указывает Robocopy не перемещать пустые папки в «целевой» путь. Поскольку мы упоминали одинаковые пути для источника и назначения, Robocopy удалит пустые папки из-за / S выключатель.

    robocopy удалить пустые папки

Пустые папки в выбранном пути очищены.

Хотите найти пустые папки, но не удалять их?

Вы можете использовать / Л (только список) аргумент командной строки с помощью Robocopy, чтобы он выполнял только пробный прогон вместо выполнения фактической операции копирования / перемещения.

/ Л :: Только список — не копировать, не ставить отметку времени и не удалять файлы.
/ДВИГАТЬСЯ :: ПЕРЕМЕСТИТЬ файлы И каталоги (удалить из источника после копирования).
/ S :: копировать подкаталоги, но не пустые.

robocopy удаляет пустые папки - список -dryrun

if(typeof __ez_fad_position!=’undefined’){__ez_fad_position(‘div-gpt-ad-winhelponline_com-large-mobile-banner-1-0’)};

Вы можете увидеть количество файлов в столбце, услышав путь к папке. В 0означают, что в этих папках нет файлов.

Давайте проверим эту команду в реальных условиях!

Мой %ДАННЫЕ ПРИЛОЖЕНИЯ% папка заполнена пустыми папками, добавленными устаревшими программами.

содержимое перемещаемой папки appdata

До очистки в папке Appdata \ Roaming была 681 папка, как видно из свойств папки.
удалить пустые папки - до

Я открыл командную строку и выполнил следующую команду:

robocopy "% appdata%" "% appdata%" / S / MOVE

Примечание. Переменная среды% appdata% преобразуется в C: \ Users \ {имя пользователя} \ AppData \ Roaming папка. Вы можете использовать полный путь к папке или эквивалентную переменную среды с Robocopy. Либо это нормально.

robocopy удалить пустые папки - appdata roaming

Он успешно удалил 94 пустые папки в моем %ДАННЫЕ ПРИЛОЖЕНИЯ% папка и подпапки.

удалить пустые папки - после

Примечание редактора. В выводе командной строки под разделом статистики появилась следующая ошибка:«ОШИБКА 32 (0x00000020) Удаление исходного каталога C: \ Users \ ramesh \ AppData \ Roaming \
Процесс не может получить доступ к файлу, потому что он используется другим процессом ».

robocopy удалить пустые папки - ошибка

Поскольку мы проинструктировали Robocopy переместить (/ДВИГАТЬСЯ) каталог% APPDATA%, инструмент пытался очистить «исходную» папку после «перемещения» ее в место назначения. Не может, поскольку% APPDATA% — это особая папка. Ошибка не возникает, если путь к каталогу не является специальной папкой. Поскольку все шло нормально, я просто проигнорировал (тривиальную) ошибку.

4. Найдите и удалите пустые папки с помощью PowerShell.

Следующая командная строка PowerShell рекурсивно удаляет пустые папки, расположенные в указанной базовой папке.

  1. Запустите PowerShell и введите следующую команду:
    (gci "путь к папке" -r |? {$ _. PSIsContainer -eq $ True}) | ? {$ _. GetFileSystemInfos (). Count -eq 0} | Убрать предмет

    Замените «путь к папке» на местоположение базовой папки. Например, я указываю здесь папку «Роуминг»:

    (gci "C: \ Users \ ramesh \ AppData \ Roaming" -r |? {$ _. PSIsContainer -eq $ True}) | ? {$ _. GetFileSystemInfos (). Count -eq 0} | Убрать предмет

    PowerShell рекурсивно удаляет пустые папки

    Это удаляет все пустые подпапки в моем %данные приложения% папка рекурсивно и не отображает никаких результатов, если не обнаруживает ошибок.

Обратите внимание, что приведенная выше команда PowerShell очищает только последний уровень пустой вложенной папки. Например, предположим, что у вас есть пустые вложенные папки вроде этой:

C: \ 1 └───2 └───3 └───4

Выполнение указанной выше команды очищает самую глубокую пустую папку → 4. Повторный запуск скрипта очистит другой уровень вложенной папки (3), и так далее.

Вы можете использовать сценарий PowerShell в Svendsen Tech PowerShell Wiki для работы с вложенными папками.

В качестве альтернативы вы можете использовать следующий метод, решение Windows Scripting, для рекурсивной очистки всех пустых папок, включая вложенные.

if(typeof __ez_fad_position!=’undefined’){__ez_fad_position(‘div-gpt-ad-winhelponline_com-leader-2-0’)};

Найдите пустые папки, но не хотите их удалять?

Хотите получить список пустых папок, но не хотите их удалять? Вместо этого используйте этот пример командной строки:

(gci "C: \ Users \ ramesh \ AppData \ Roaming" -r |? {$ _. PSIsContainer -eq $ True}) | ? {$ _. GetFileSystemInfos (). Count -eq 0} | выберите FullName | Out-GridView

PowerShell рекурсивно удаляет пустые папкиif(typeof __ez_fad_position!=’undefined’){__ez_fad_position(‘div-gpt-ad-winhelponline_com-large-leaderboard-2-0’)};

Команда выводит список пустых папок с полными путями к элементу управления представлением сетки.

PowerShell найти список пустых папок в виде сетки вывода

Совет: в представлении сетки вы можете выбрать все и скопировать выделение, нажав Ctrl + C

if(typeof __ez_fad_position!=’undefined’){__ez_fad_position(‘div-gpt-ad-winhelponline_com-large-mobile-banner-2-0′)};if(typeof __ez_fad_position!=’undefined’){__ez_fad_position(‘div-gpt-ad-winhelponline_com-large-mobile-banner-2-0_1’)};.large-mobile-banner-2-multi-158{border:none!important;display:block!important;float:none!important;line-height:0;margin-bottom:15px!important;margin-left:0!important;margin-right:0!important;margin-top:15px!important;min-height:250px;min-width:250px;padding:0;text-align:center!important}

Перед запуском команды удаления папок рекомендуется предварительно просмотреть список.

5. Найдите и удалите пустые папки с помощью сценариев Windows.

Сотрудник Microsoft Джереми Джеймсон написал сценарий VBScript, который рекурсивно удаляет пустые папки. Я добавил в скрипт больше строк, чтобы принудительно удалять пустые каталоги, доступные только для чтения, выводить совокупный список пустых папок. Он также выводит список пустых папок, которые не удалось удалить, и соответствующее описание ошибки.

Сценарий может удалять вложенные пустые каталоги в подпапках.

'Рекурсивно удаляет пустые папки в Windows https://www.winhelponline.com/blog/find-and-delete-empty-folders-windows/
Вариант Явный
Если (WScript.Arguments.Count <> 1) Тогда WScript.Echo ("Использование: cscript DeleteEmptyFolders.vbs {путь}") WScript.Quit (1) Конец, если
Тусклый strPath: strPath = WScript.Arguments (0) Dim fso: Set fso = CreateObject ("Scripting.FileSystemObject") Dim objFolder: установите objFolder = fso.GetFolder (strPath) Dim sDelList, sDelErr, sFolderPath Dim iCnt iCnt = 0
DeleteEmptyFolders objFolder
Sub DeleteEmptyFolders (папка) Тусклая подпапка
При ошибке Возобновить Далее 'Пропускать ошибки при доступе к узлам и т. Д. Для каждой подпапки в папке. Подпапка DeleteEmptyFolders Следующий При ошибке Перейти к 0
Если folder.SubFolders.Count = 0 и folder.Files.Count = 0 Тогда sFolderPath = путь к папке. При ошибке Возобновить Далее fso.DeleteFolder folder.Path, True Если номер ошибки <> 0 Тогда sDelErr = sDelErr & Номер ошибки & ":" & Описание ошибки & _ vbCrLf и sFolderPath и vbCrLf и vbCrLf Еще sDelList = sDelList & vbCrLf & sFolderPath iCnt = iCnt + 1 Конец, если При ошибке Перейти к 0 Конец, если Конец подписки
Если sDelList = "" и sDelErr = "" Тогда WScript.Echo "Нет пустых папок под" & _ "" "" & strPath & "" "" & "дерево" WScript.Quit Конец, если
Если sDelList <> "", то sDelList = "Список удаленных пустых папок" & vbCrLf _ & String (38, "-") & vbCrLf & sDelList & vbCrLf & _ vbCrLf & "Всего:" & iCnt & "папки удалены."
Если sDelErr <> "", то sDelErr = "Эти папки не могут быть удалены" & _ vbCrLf & String (45, "-") & vbCrLf & sDelErr
WScript.Echo sDelList & vbCrLf & vbCrLf & sDelErr 
  • Скачать del_empty_folders.vbs

При желании вы можете соответствующим образом переименовать файл скрипта, например, delempty.vbs, и переместить его в папку C: \ Windows папка.

Вы можете запустить сценарий двумя способами:

через командную строку, запустив:

cscript.exe delempty.vbs "путь_папки"

найти и удалить пустые папки

через графический интерфейс, запустив:

wscript.exe delempty.vbs "путь к папке"

через меню Отправить

Вы можете создать ярлык для сценария в папке SendTo и назвать его «Удалить пустые папки».

удалить пустые папки

Затем щелкните правой кнопкой мыши папку, из которой вы хотите рекурсивно удалить пустые подпапки → щелкните «Отправить» → щелкните «Удалить пустые папки» в меню «Отправить».

Вы увидите список удаленных пустых папок и их общее количество, а также папки, которые не удалось удалить, с соответствующими кодами ошибок.

найти и удалить пустые папки - vbscript

6. Найдите и удалите пустые папки с помощью DelEmpty.exe.

DelEmpty.exe — это консольный инструмент от IntelliAdmin, который может рекурсивно удалять пустые каталоги. Эта программа также может быстро рекурсивно удалять пустые 0-байтовые файлы.

Ниже приводится синтаксис командной строки для программы:

ПАРАМЕТРЫ DelEmpty.exe [ПУТЬ]
Аргумент Описание
-f Удалить пустые (0-байтовые) файлы
-d Удалить пустые каталоги
-v Подробный режим
-c Режим подтверждения (показывает, что было удалено)
-s Включать подкаталоги (обходить подпапки)
-l Перечислите, что будет удалено (не удалит)
Удалить без запроса (да / нет)

Пример 1. Чтобы вывести список пустых папок в каталоге Mozilla в AppData, я использовал следующую командную строку:

DelEmpty.exe "% AppData% \ Mozilla" -d -c -s -y -l

Приведенная выше команда показывает список пустых папок, но не удаляет их, так как -l (только список) используется переключатель.

Для имен папок, содержащих пробелы — например, Mozilla Firefox, не забудьте заключить путь в двойные кавычки.

Пример 2: Чтобы удалить пустые папки под Каталог Mozilla под %Данные приложения%, Я запускаю ту же командную строку, но без -l выключатель:

DelEmpty.exe "% AppData% \ Mozilla" -d -c -s -y

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

Программа просматривает все подпапки и удаляет пустые папки. Вложенные пустые папки тоже удаляются. Например, если вы хотели удалить пустые каталоги из этой структуры:

C: \ Folder1 \ Folder2 \ EmptyFolder1 C: \ Folder1 \ Folder2 \ EmptyFolder2

После EmptyFolder1 а также EmptyFolder2 папки удаляются, папка 2 также пуста — и она также будет удалена. Также, DelEmpty.exe также может удалять папки с юникодом / иностранными символами — например, 蜍 穂

Если вам известны другие способы удаления пустых папок в Windows, сообщите об этом в разделе комментариев ниже.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *