Содержание
Некоторые приложения создают пустые 0-байтовые файлы в своих папках данных и не могут их очистить. Со временем, если вы видите много нулевых файлов в иерархии папок, вот несколько способов найти все эти 0-байтовые файлы и удалить их.
Найти и / или удалить пустые (0 байт) файлы в Windows:
- с помощью утилиты «Найти пустые файлы-папки»
- с помощью поиска Windows
- используя командную строку
- используя PowerShell
- используя VBScript
Поиск и удаление 0-байтовых файлов рекурсивно в дереве папок
Важно отметить, что иногда удаление 0-байтовых файлов может быть проблематичным, поскольку некоторым приложениям они могут понадобиться в качестве заполнителя или по какой-либо другой причине. Если вы уверены, что вам не нужны никакие 0-байтовые файлы в пути к папке и хотите удалить их все, выполните одно из следующих действий.
Давайте начнем с аккуратного бесплатного стороннего инструмента с графическим интерфейсом, а затем рассмотрим родные методы.
1. Использование утилиты «Найти пустые файлы-папки»
Find Empty Files-n-Folders — отличный инструмент, который может рекурсивно находить и удалять пустые файлы (0 байт) и пустые папки в дереве папок.
Загрузите файл Find Empty Files-n-Folders (программа установки размером 600 КБ) с Ashisoft.com.
Выберите папку и нажмите «Сканировать сейчас».
Инструмент будет перечислять пустые файлы и папки на отдельных вкладках.
На вкладке Пустые файлы нажмите Отметить все файлы а затем нажмите Удалить файлы.
Аналогичным образом, чтобы удалить 0-байтовые файлы в выбранном дереве папок, нажмите Пустые файлы Вкладка.
У Ashisoft.com есть и другие замечательные инструменты, которые вы можете проверить!
2. Использование поиска Windows
Windows Search позволяет вывести список всех 0-байтовых файлов, используя size:
оператор запроса.
Откройте папку, в которой вы хотите найти или удалить пустые файлы.
В поле поиска введите size:empty
или size:0 KB
Чтобы отфильтровать результаты по расширению файла (например, файлы javascript → расширение .js
), используйте следующий синтаксис предварительного запроса (AQS):
size:empty AND ext:js
3. Использование командной строки
Чтобы вывести список всех 0-байтовых (0 КБ) файлов в виде папки и подпапок рекурсивно и вывести имена в файл, используйте следующую команду.
Обратите внимание, что вам нужно будет запустить команду из папки, в которой вы хотите найти или удалить пустые (0 КБ) файлы.
for /r %F in (*) do @if %~zF==0 echo "%F" >>d:\0byte-files.txt
Кроме того, вы можете включить путь к целевой папке в for
команда, чтобы вам не пришлось менять каталог в окне консоли. Пример:
for /r "d:\websites" %F in (*) do @if %~zF==0 echo "%F" >>d:\0byte-files.txt
Таким образом, вам не нужно переключаться на эту конкретную папку в командной строке
Полный список вывода 0-байтовых файлов записывается в файл с именем 0byte-files.txt
на D:\
привод.
Чтобы удалить файлы, вы должны использовать del
команда вместо echo
,
for /r %F in (*.*) do @if %~zF==0 del "%F"
или укажите путь к целевой папке в самой команде:
for /r "d:\websites" %F in (*.*) do @if %~zF==0 del "%F"
Найти и удалить 0-байтовые файлы с определенным расширением
В приведенных выше примерах вы можете даже фильтровать по расширению файла. Например, чтобы удалить 0-байт .txt
файлы, вы бы использовали *.txt
вместо того *.*
или *
for /r %F in (*.txt) do @if %~zF==0 del "%F"
или с указанием пути к папке:
for /r "d:\websites" %F in (*.txt) do @if %~zF==0 del "%F"
Что бы удалить все пустое .txt
файлы из текущей папки и подпапок или из указанного дерева папок рекурсивно.
Создать пакетный файл
Если вы хотите сделать командный файл найти и перечислить пустые файлы и вывод результатов в текстовый файл, вот один:
@echo off set out="d:\0byte-files.txt" for /r "%~1." %%A in (*.*) do if %%~zA == 0 echo "%%~fA" >> %out%
Сохраните вышеуказанное содержимое как find-empty-files.bat
,
к удалять Пустые файлы вместо вывода списка файлов, используйте этот пакетный файл:
@echo off for /r "%~1." %%A in (*.*) do if %%~zA == 0 del "%%~fA"
к запустить пакетный файл для папки рекурсивно, вы бы использовали следующий синтаксис:
d:\scripts\find-empty-files.bat d:\websites
Что делает приведенная выше команда?
for /r %F in (*)
рекурсивно перебирает файлы в указанной папке и подпапках.if %~zF==0
проверяет, является ли повторяемый файл 0-байтовым файломdel %%~fA
удалить 0-байтовый файл
СВЯЗАННЫЙ: Как автоматически находить и удалять пустые папки в Windows
4. Использование PowerShell
Запустите PowerShell.exe и используйте один из следующих способов:
Список пустых (0 КБ) файлов
к получить список 0-байтовых файлов в дереве папок, используйте этот синтаксис командной строки:
Get-ChildItem -Path "D:\websites\test" -Recurse -Force | Where-Object { $_.PSIsContainer -eq $false -and $_.Length -eq 0 } | Select -ExpandProperty FullName
Чтобы вывести список в файл:
Get-ChildItem -Path "D:\websites" -Recurse -Force | Where-Object { $_.PSIsContainer -eq $false -and $_.Length -eq 0 } | Select -ExpandProperty FullName | Set-Content -Path d:\found.txt
Чтобы вывести список в виде сетки:
Get-ChildItem -Path "D:\websites" -Recurse -Force | Where-Object { $_.PSIsContainer -eq $false -and $_.Length -eq 0 } | out-gridview
Перечислить только конкретный тип файла (например., .bmp
):
Get-ChildItem -Path "D:\websites" -include *.bmp -Recurse -Force | Where-Object { $_.PSIsContainer -eq $false -and $_.Length -eq 0 } | out-gridview
Удалить пустые (0 КБ) файлы
к удалять все 0-байтовые файлы в дереве папок, используйте этот синтаксис командной строки:
Get-ChildItem -Path "D:\websites" -Recurse -Force | Where-Object { $_.PSIsContainer -eq $false -and $_.Length -eq 0 } | remove-item
Удалить 0-байтовые файлы, имеющие конкретное расширение (например., .bmp
)
Get-ChildItem -Path "D:\websites" -include *.bmp -Recurse -Force | Where-Object { $_.PSIsContainer -eq $false -and $_.Length -eq 0 } | remove-item
4. Использование VBScript
Следующий VBScript рекурсивно очищает пустые (0-байтовые) файлы в дереве папок.
Скопируйте следующий код в Блокнот и сохраните его как del-zero-byte-files.vbs
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, sFilePath Dim iCnt iCnt = 0 DeleteZeroByteFiles objFolder Sub DeleteZeroByteFiles(folder) Dim subfolder, file On Error Resume Next 'Skip errors when accessing Junctions, etc. For Each subfolder In folder.SubFolders DeleteZeroByteFiles subfolder Next On Error Goto 0 For Each file In folder.files If file.size = 0 Then sFilePath = file.Path On Error Resume Next fso.DeleteFile file, True If Err.number 0 Then sDelErr = sDelErr & Err.number & ": " & Err.description & _ vbCrLf & sFilePath & vbCrLf & vbCrLf Else sDelList = sDelList & vbCrLf & sFilePath iCnt = iCnt + 1 End If On Error Goto 0 End If Next End Sub If sDelList = "" And sDelErr = "" Then WScript.Echo "No Empty files found under the " & _ """" & strPath & """" & " tree" WScript.Quit End If If sDelList "" then sDelList = "List of empty files deleted" & vbCrLf _ & String(38,"-") & vbCrLf & sDelList & vbCrLf & _ vbCrLf & "Total: " & iCnt & " files deleted." If sDelErr "" then sDelErr = "These files could not be deleted" & _ vbCrLf & String(45,"-") & vbCrLf & sDelErr WScript.Echo sDelList & vbCrLf & vbCrLf & sDelErr
использование
Чтобы запустить скрипт для папки, вы можете использовать wscript.exe или cscript.exe, как показано ниже:
cscript d:\scripts\del-zero-byte-files.vbs "d:\travel documents" wscript d:\scripts\del-zero-byte-files.vbs "d:\travel documents"
CScript.exe показывает выходные данные в окне консоли. Это означает, что вам нужно запустить его из окна командной строки, чтобы увидеть результат.
WScript.exe показывает результаты в графическом интерфейсе.
через меню «Отправить»
Вы можете создать ярлык для скрипта в папке SendTo и назвать его как Удалить 0-байтовые файлы. Приставка wscript.exe
в целевом поле свойств ярлыка.
Затем щелкните правой кнопкой мыши папку, в которой вы хотите рекурсивно удалить пустые файлы в дереве папок → щелкните Отправить → нажмите Удалить 0-байтовые файлы в меню «Отправить».
Вы увидите список удаленных пустых файлов и общее количество, а также файлы, которые невозможно удалить, с отображением соответствующих кодов ошибок.
СВЯЗАННЫЙ: Как автоматически удалять пустые папки в Windows
Это оно!