Содержание
- 1 Как найти и удалить пустые папки в Windows?
- 1.1 1. Удалите пустые папки с помощью утилиты «Find Empty Files-n-Folders»
- 1.2 2. Удалите пустые папки, используя команды «for» и «rd»
- 1.3 3. Найдите и удалите пустые папки с помощью команды Robocopy.
- 1.4 4. Найти и удалить пустые папки с помощью PowerShell
- 1.5 5. Найдите и удалите пустые папки, используя Windows Scripting
Со временем сотни пустых папок и ненужных файлов могут занять ваш жесткий диск. Хотя ненужные файлы занимают место на диске и могут быть очищены с помощью параметров очистки диска или хранилища, пустые каталоги остаются.
Пустые папки не занимают места на диске, но для лучшей организации ваших данных вам может понадобиться время от времени сокращать их.
В этой статье рассматриваются различные методы поиска и удаления пустых папок на вашем компьютере.
содержание
- Удалите пустые папки, используя Найти пустые файлы-папки утилита
- Удалите пустые папки с помощью команд For и RD
- Удалите пустые папки с помощью Robocopy
- Удалите пустые папки с помощью PowerShell
- Удалить пустые папки с помощью Windows Scripting
Как найти и удалить пустые папки в Windows?
Пустая папка или каталог — это папка, в которой нет файла или подкаталога. Пустые папки не занимают места на диске, но их слишком много может создавать неудобства. Чтобы найти и удалить их, используйте один из методов ниже.
Важный: Запуск рекурсивного автоматического инструмента или командного файла для удаления пустых папок на всем системном диске обычно не рекомендуется. Это связано с тем, что некоторые программы могут не работать и выдают странную ошибку, когда обнаруживается, что отсутствует необходимая папка. Как всегда, применяется стандартное предупреждение. Убедитесь, что у вас есть соответствующие резервные копии, желательно на внешнем диске, прежде чем манипулировать с файловой системой или реестром Windows.
СВЯЗАННЫЙ: Поиск и удаление 0-байтовых файлов рекурсивно в папке в Windows
Начнем с аккуратного инструмента с графическим интерфейсом, за которым последуют собственные методы командной строки и сценариев.
1. Удалите пустые папки с помощью утилиты «Find Empty Files-n-Folders»
Find Empty Files-n-Folders — отличный инструмент, который может рекурсивно находить и удалять пустые файлы (0 байт) и пустые папки в дереве папок.
Загрузите файл Find Empty Files-n-Folders (программа установки размером 600 КБ) с Ashisoft.com.
Выберите папку и нажмите «Сканировать сейчас».
Инструмент будет перечислять пустые файлы и папки на отдельных вкладках.
щелчок Отметить все папки а затем нажмите Удалить папки.
Аналогичным образом, чтобы удалить 0-байтовые файлы в выбранном дереве папок, нажмите Пустые файлы Вкладка.
У Ashisoft.com есть и другие замечательные инструменты, которые вы можете проверить!
2. Удалите пустые папки, используя команды «for» и «rd»
Вы можете использовать внутренние команды командной строки for
а также rd
перечислить список папок и удалить пустые.
- Нажмите удерживая клавишу Shift, щелкните правой кнопкой мыши папку и нажмите Откройте командное окно здесь.Откроется командная строка в текущем расположении папки, что также можно проверить в консоли.Заметка: Вы должны убедиться, что запускаете следующую команду из точного пути родительской папки, где вам нужно найти и удалить пустые подпапки.
- Когда вы окажетесь в нужном каталоге в командной строке, запустите эту командную строку:
for /f "delims=" %i in ('dir /s /b /ad ^| sort /r') do rd "%i" 2>NUL
При этом удаляются все пустые каталоги в подкаталогах из пути к базовой папке, включая вложенные пустые папки.
Приведенная выше командная строка любезно предоставлена Рэймондом Ченом из Microsoft через его блог The Old New Thing. В этом посте командная строка Рэймонда была немного изменена, так что она также удаляет имена папок, содержащие пробелы.
Как работает команда
Приведенная выше команда выводит список всех подкаталогов (рекурсивно) в текущем базовом пути и сортирует список (sort /r
) в обратном порядке. В обратном порядке сортировки необходимо убедиться, что перечисление выполняется снизу вверх. Это важно для удаления пустых каталогов, так как вы должны удалить подкаталоги, прежде чем удалить родительский.
Затем он пытается удалить список каталогов (в обратном порядке сортировки), используя RD
команда. Если каталог не пустой, он переходит к следующему каталогу и так далее. 2>NUL
Команда обеспечивает подавление выходного текста «каталог не пустой».
Единственный недостаток вышеописанного метода заключается в том, что он бесполезен, если вы просто хотите найти пустые папки, не удаляя их. Если вы хотите найти список пустых папок, используйте командную строку в абзаце ниже или используйте любой другой метод, описанный в этой статье.
Найти пустые папки, но не удалять
Чтобы найти только пустые папки, не удаляя их, используйте следующий синтаксис командной строки:
for /r "D:\uploads\2019" /d %F in (.) do @dir /b "%F" | findstr "^" >nul || echo %~fF
Он показывает вывод, содержащий список пустых каталогов.
Допустим, у вас есть пустые вложенные папки, например:
C:\1 └───2 └───3 └───4
Выполнение вышеуказанной команды выводит список только самой глубокой пустой папки → 4
, Технически это правильно, потому что папка не может считаться пустой, если в ней есть подпапка или файл.
3. Найдите и удалите пустые папки с помощью команды Robocopy.
Robocopy — это мощный встроенный инструмент для копирования файлов, который имеет множество расширенных функций. Мы рассмотрели Robocopy в статье «Сравнение содержимого двух папок в Windows».
Предположим, у вас есть папка с именем cars
который содержит несколько подпапок, некоторые из которых пусты. Мы собираемся удалить пустые, используя Robocopy.
трюк здесь нужно использовать команду перемещения Robocopy, передавая один и тот же путь к папке как для источника, так и для места назначения.
- Откройте окно командной строки
- Введите следующую команду и нажмите клавишу ВВОД:
robocopy "d:\automobile rates\cars" "d:\automobile rates\cars" /S /move
самое важное Стоит отметить, что источник а также назначения пути (намеренно) одинаковы.
/S
Параметр указывает Robocopy не перемещать пустые папки по пути «назначения». Как мы уже упоминали одинаковые пути для источника и назначения, Robocopy просто удалит пустые папки из-за наличия/S
переключатель.
Пустые папки в выбранном пути теперь очищаются.
Хотите найти пустые папки, но не удалять их?
Вы можете использовать /L
(только для списка) аргумент командной строки с Robocopy, так что он выполняет только пробный запуск вместо выполнения фактической операции копирования / перемещения.
/L
:: Только список — не копируйте, не ставьте метки времени и не удаляйте файлы./MOVE
:: MOVE файлы И каталоги (удалить из источника после копирования)./S
:: копировать подкаталоги, но не пустые.
Вы можете увидеть количество файлов в столбце и услышать путь к папке. 0
Это означает, что в этой папке нет файлов.
Давайте проведем настоящую проверку этой команды!
мой %APPDATA%
папка заполнена пустыми папками, добавленными программами, которые устарели.
До очистки, AppData \ Roaming В папке было 681 папка, как видно в свойствах папки.
Я открыл командную строку и выполнил следующую команду:
robocopy "%appdata%" "%appdata%" /S /MOVE
Примечание. Переменная среды% appdata% переводится в C:\Users\{username}\AppData\Roaming
папки. Вы можете использовать полный путь к папке или эквивалентную переменную среды с Robocopy. Либо в порядке.
Он успешно удален 94 пустые папки в моем %APPDATA%
папка и подпапки.
«ОШИБКА 32 (0x00000020) Удаление исходного каталога C: \ Users \ ramesh \ AppData \ Roaming \
Процесс не может получить доступ к файлу, потому что он используется другим процессом ».
Потому что мы дали команду Robocopy двигаться (/MOVE
) каталог% APPDATA%, инструмент пытался очистить «исходную» папку после «перемещения» ее в место назначения. Это невозможно, так как% APPDATA% — это специальная папка. Ошибка не возникает при использовании пути к каталогу, который не является специальной папкой. Поскольку все шло хорошо, я просто проигнорировал (тривиальную) ошибку.
4. Найти и удалить пустые папки с помощью PowerShell
Следующая командная строка PowerShell рекурсивно удаляет пустые папки, расположенные в указанной базовой папке.
- Запустите PowerShell и введите следующую команду:
(gci "folderpath" -r | ? {$_.PSIsContainer -eq $True}) | ?{$_.GetFileSystemInfos().Count -eq 0} | remove-item
Замените «путь к папке» на расположение базовой папки. Например, я указываю Роуминг папка здесь:
(gci "C:\Users\ramesh\AppData\Roaming" -r | ? {$_.PSIsContainer -eq $True}) | ?{$_.GetFileSystemInfos().Count -eq 0} | remove-item
Это удаляет все пустые подпапки под моим
%appdata%
папка рекурсивно и не показывает никаких выходных данных, если не обнаружены какие-либо ошибки.
Обратите внимание, что приведенная выше команда PowerShell очищает только последний уровень пустой вложенной папки. Например, допустим, у вас есть пустые вложенные папки, например:
C:\1 └───2 └───3 └───4
Выполнение вышеуказанной команды очищает самую глубокую пустую папку → 4
, Повторный запуск скрипта очистит другой уровень вложенной папки (3
), и так далее.
Вы можете использовать сценарий PowerShell в Svendsen Tech PowerShell Wiki для работы с вложенными папками.
Кроме того, вы можете использовать следующий метод, решение Windows Scripting, чтобы рекурсивно очистить все пустые папки, включая вложенные.
Найти пустые папки, но не хотите их удалять?
Хотите получить список пустых папок, но не хотите их удалять? Вместо этого используйте этот пример командной строки:
(gci "C:\Users\ramesh\AppData\Roaming" -r | ? {$_.PSIsContainer -eq $True}) | ?{$_.GetFileSystemInfos().Count -eq 0} | select FullName | Out-GridView
Команда выводит список пустых папок с полными путями в элемент управления представлением сетки.
Чаевые: В виде сетки вы можете выделить все и скопировать выделение, нажав Ctrl + C
Рекомендуется предварительно просмотреть список перед запуском команды для удаления папок.
5. Найдите и удалите пустые папки, используя Windows Scripting
Сотрудник Microsoft Джереми Джеймсон написал VBScript, который рекурсивно удаляет пустые папки. Я добавил больше строк в скрипт, чтобы он принудительно удалял пустые директории только для чтения, выводил агрегированный список пустых папок. Он также выводит список пустых папок, которые не могут быть удалены, вместе с описанием ошибки.
Сценарий способен удалять вложенные пустые каталоги в подпапках.
Option Explicit If (WScript.Arguments.Count 1) Then WScript.Echo("Usage: cscript DeleteEmptyFolders.vbs {path}") WScript.Quit(1) End If Dim strPath : strPath = WScript.Arguments(0) Dim fso : Set fso = CreateObject("Scripting.FileSystemObject") Dim objFolder : Set objFolder = fso.GetFolder(strPath) Dim sDelList, sDelErr, sFolderPath Dim iCnt iCnt = 0 DeleteEmptyFolders objFolder Sub DeleteEmptyFolders(folder) Dim subfolder On Error Resume Next 'Skip errors when accessing Junctions, etc. For Each subfolder In folder.SubFolders DeleteEmptyFolders subfolder Next On Error Goto 0 If folder.SubFolders.Count = 0 And folder.Files.Count = 0 Then sFolderPath = folder.Path On Error Resume Next fso.DeleteFolder folder.Path, True If Err.number 0 Then sDelErr = sDelErr & Err.number & ": " & Err.description & _ vbCrLf & sFolderPath & vbCrLf & vbCrLf Else sDelList = sDelList & vbCrLf & sFolderPath iCnt = iCnt + 1 End If On Error Goto 0 End If End Sub If sDelList = "" And sDelErr = "" Then WScript.Echo "No Empty folders found under the " & _ """" & strPath & """" & " tree" WScript.Quit End If If sDelList "" then sDelList = "List of empty folders deleted" & vbCrLf _ & String(38,"-") & vbCrLf & sDelList & vbCrLf & _ vbCrLf & "Total: " & iCnt & " folders deleted." If sDelErr "" then sDelErr = "These folders could not be deleted" & _ vbCrLf & String(45,"-") & vbCrLf & sDelErr WScript.Echo sDelList & vbCrLf & vbCrLf & sDelErr
Скопируйте приведенный выше код в Блокнот и сохраните файл с .VBS расширение, скажем delempty.vbs.
Вы можете запустить скрипт двумя способами:
через командную строку, запустив:
cscript.exe delempty.vbs "folder_path"
через графический интерфейс, запустив:
wscript.exe delempty.vbs "folder_path"
через меню «Отправить»
Вы можете создать ярлык для скрипта в папке SendTo и назвать его как Удалить пустые папки.
Затем щелкните правой кнопкой мыши папку, в которой вы хотите рекурсивно удалить пустые подпапки → щелкните Отправить → нажмите Удалить пустые папки в меню «Отправить».
Вы увидите список удаленных пустых папок и общее количество, а также папки, которые нельзя удалить, с отображением соответствующих кодов ошибок.
Это оно! Если вам известны другие способы удаления пустых папок в Windows, сообщите об этом в разделе комментариев ниже.