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

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

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

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

содержание

  1. Удалите пустые папки, используя Найти пустые файлы-папки утилита
  2. Удалите пустые папки с помощью команд For и RD
  3. Удалите пустые папки с помощью Robocopy
  4. Удалите пустые папки с помощью PowerShell
  5. Удалить пустые папки с помощью 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 перечислить список папок и удалить пустые.

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

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

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

Приведенная выше командная строка любезно предоставлена ​​Рэймондом Ченом из 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, передавая один и тот же путь к папке как для источника, так и для места назначения.

  1. Откройте окно командной строки
  2. Введите следующую команду и нажмите клавишу ВВОД:
    robocopy "d:\automobile rates\cars" "d:\automobile rates\cars" /S /move

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

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

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

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

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

/L :: Только список — не копируйте, не ставьте метки времени и не удаляйте файлы.
/MOVE :: MOVE файлы И каталоги (удалить из источника после копирования).
/S :: копировать подкаталоги, но не пустые.

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

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

Давайте проведем настоящую проверку этой команды!

мой %APPDATA% папка заполнена пустыми папками, добавленными программами, которые устарели.

содержимое папки роуминга appdata

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

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

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

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

robocopy удалить пустые папки - appdata роуминг

Он успешно удален 94 пустые папки в моем %APPDATA% папка и подпапки.

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

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

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

Потому что мы дали команду Robocopy двигаться (/MOVE) каталог% APPDATA%, инструмент пытался очистить «исходную» папку после «перемещения» ее в место назначения. Это невозможно, так как% APPDATA% — это специальная папка. Ошибка не возникает при использовании пути к каталогу, который не является специальной папкой. Поскольку все шло хорошо, я просто проигнорировал (тривиальную) ошибку.

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

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

  1. Запустите 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

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

    Это удаляет все пустые подпапки под моим %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

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

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

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

Чаевые: В виде сетки вы можете выделить все и скопировать выделение, нажав 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 и назвать его как Удалить пустые папки.

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

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

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

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

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

Ссылка на основную публикацию
Adblock
detector