Удаление файлов по маске windows

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

Командная строка

Первый способ основан на возможностях командной строки, а именно команды 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 — рекурсия (удаление файлов во вложенных директориях)

Скрипт удаления файлов в редакторе AkelPad

После набора команд в редакторе, нажмите Файл — Сохранить как…

В окне Сохранить как выполните следующие действия:

  • выберите папку для сохранения скрипта (любую, не имеет значения);
  • в поле Кодировка укажите 866 (OEM — русская);
  • задайте имя файла и через точку укажите расширение (имя.bat. Название файла не должно повторять имя команды del, shutdown и прочее. Назовите его например deltorr.bat);
  • нажмите Сохранить:

Сохранение bat-файла в кодировке OEM-866

Вот таким образом. Пишите в комментариях, помогла ли статья решить вашу проблему.

  • Remove From My Forums

 locked

Удаление файлов по маске

  • Вопрос

  • День добрый коллеги.

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

    Скрипт 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 Гб.

  • Удаление файлов из реестра windows 10
  • Удаление следов usb устройств из реестра windows 7
  • Удаленное включение компьютера windows 10
  • Удаление программы из автозагрузки windows 10
  • Удаление файлов и очистка диска windows 10 что будет