Если требуется удалить большое количество файлов по маске (например, с одинаковым расширением), во всех вложенных каталогах, как лучше, т.е. быстрее это сделать.
Есть два пути, как сделать это гораздо быстрее, чем удалять вручную по одному.
Командная строка
Первый способ основан на возможностях командной строки, а именно команды FOR с ключом /r. Необходимо перейти в каталог, во вложенных каталогах которого необходимо удалить файлы, и написать команду:
for /r %a in (.) do del "%~a\*.jpg"
Вместо *.jpg
можно подставить любую другую маску.
Если вместо (.)
указать (<путь>)
, то можно обойтись и без перехода.
Запись "%~a\*.jpg"
предназначена для имен папок и файлов, содержащих пробелы. Если все имена короткие и без пробелов, можно написать просто %a\*.jpg
. Преимущество этого способа в возможности использования в командном файле, но для имен файлов с Unicode символами это не сработает.
Проводник
Второй вариант основан на встроенной функции поиска и не требует использования командной строки.
В проводнике необходимо
- открыть папку, во вложенных папках которой требуется удалить файлы,
- ввести в поле поиска часть имени файла,
- в списке найденных файлов выделить их (Ctrl-A) и удалить (Del).
Получается, что в проводнике эта задача решается даже проще, чем в чистой командной строке, потому что не надо запоминать команду и синтаксис.
Far Manager
Но если использовать Far Manager, то поиск можно выполнить, как и в проводнике, надо лишь в окне поиска (Alt-F7) после получения результата нажать кнопку Панель (Panel в английской версии), и Far откроет временную панель с найденными файлами. Дальше можно выделить один или несколько файлов (Insert), или же все файлы (Ctrl-Num+), а затем удалить (F8), скопировать (F5) или переместить (F6).
You can use wildcards with the del
command, and /S
to do it recursively.
del /S *.jpg
Addendum
@BmyGuest asked why a downvoted answer (del /s c:\*.blaawbg
) was any different than my answer.
There’s a huge difference between running del /S *.jpg
and del /S C:\*.jpg
. The first command is executed from the current location, whereas the second is executed on the whole drive.
In the scenario where you delete jpg
files using the second command, some applications might stop working, and you’ll end up losing all your family pictures. This is utterly annoying, but your computer will still be able to run.
However, if you are working on some project, and want to delete all your dll
files in myProject\dll
, and run the following batch file:
@echo off
REM This short script will only remove dlls from my project... or will it?
cd \myProject\dll
del /S /Q C:\*.dll
Then you end up removing all dll
files form your C:\
drive. All of your applications stop working, your computer becomes useless, and at the next reboot you are teleported in the fourth dimension where you will be stuck for eternity.
The lesson here is not to run such command directly at the root of a drive (or in any other location that might be dangerous, such as %windir%
) if you can avoid it. Always run them as locally as possible.
Addendum 2
The wildcard method will try to match all file names, in their 8.3 format, and their «long name» format. For example, *.dll
will match project.dll
and project.dllold
, which can be surprising. See this answer on SU for more detailed information.
Часто нам задают вопросы вроде:
- почему не работает bat-файл (т.е. скрипт)?;
- почему скрипт не удаляет файлы с русскими буквами в названии?;
- как правильно написать скрипт по удалению файлов и папок?
Самая частая проблема — это некорректная работа скрипта с кириллицей в названиях файлов и папок. И ниже вы увидите краткий пример скрипта для удаления файлов определённого типа из нужной папки с кириллицей в названии.
Итак, для создания корректных скриптов для работы с кириллическими именами рекомендуется скачать редактор Akelpad с официального сайта: http://sourceforge.net/projects/akelpad/
Создайте новый документ в AkelPad. Напишите строку. Мы в качестве примера пишем скрипт, который будет удалять файлы с расширением .torrent в папке D:\Загрузки:
forfiles /p d:\Загрузки\ /m *.torrent /c "cmd /c del /q /f @file"
/p — указание папки.
/m — фильтр по типу файлов.
/s — рекурсия (удаление файлов во вложенных директориях)
После набора команд в редакторе, нажмите Файл — Сохранить как…
В окне Сохранить как выполните следующие действия:
- выберите папку для сохранения скрипта (любую, не имеет значения);
- в поле Кодировка укажите 866 (OEM — русская);
- задайте имя файла и через точку укажите расширение (имя.bat. Название файла не должно повторять имя команды del, shutdown и прочее. Назовите его например deltorr.bat);
- нажмите Сохранить:
Вот таким образом. Пишите в комментариях, помогла ли статья решить вашу проблему.
- Remove From My Forums
Удаление файлов по маске
-
Вопрос
-
День добрый коллеги.
Есть задача удалить файлы по маске, задача достаточно простая, но возникает проблемы с исключением определенных каталогов из поиска.
Скрипт povershell
$disk=Get-WmiObject Win32_logicaldisk | Select-Object deviceid,drivetype,description
foreach ($disk1 in $disk){
if ($disk1.description -eq «Local Fixed Disk»){
Get-ChildItem -path ($disk1.deviceid + ‘\*’) | %{Get-ChildItem «$_\*» -Recurse -Include *.ege | %{Remove-Item $_}}}
}В таком виде отрабатывает нормально.
добавляю параметр — exclude ‘Windows’
и все равно удаляет из этой папки файлы с таким разрешением.
%{Get-ChildItem «$_\*» -Recurse -Include *.ege -exclude ‘Windows’
-
Перемещено
31 марта 2015 г. 11:18
-
Перемещено
Ответы
-
... | %{Get-ChildItem -path "$_\*" -filter "*.ege" -Recurse | where {$_.fullname -notlike "*Windows*" }|%{Remove-Item $_...
-
Изменено
Vector BCOModerator
31 марта 2015 г. 10:53 -
Предложено в качестве ответа
Vector BCOModerator
31 марта 2015 г. 12:22 -
Помечено в качестве ответа
Andrey Maliy
31 марта 2015 г. 12:58
-
Изменено
FORFILES полезная команда для удаления файлов с помощью планировщика задач Windows, допустим при циклической записи на диск, во избежание его переполнения.
—————————————————————————————————————————
forfiles.exe /p «С:\путь_к_папке» /s /m *.* /d -5 /c «cmd /c del @FILE»
—————————————————————————————————————————
«/p» — путь к вашей папке, не забываем кавычки если в пути имеются пробелы
«/s» — удаление файлов во всех подпапках
«/m» — маска, например если указать «.doc» то будут удалены все файлы Word, а если «video*.bak», то будут удалены только файлы с расширением .bak начинающиеся с «video»
«/d -5» — по истечении пяти дней
«/c» — выполнение команды, в нашем случае удаление
«cmd /c del @FILE» — команда удаления файла указанного в маске. Есть возможность добавить условие «if», к примеру «cmd /c if @FSIZE GTR 1073741824 del @FILE» удаляет файлы только больше 1 Гб.