Батник на удаление файлов по расширению

Del

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

  • В этом методе можно использовать символы. Например, если вы захотите удалить все содержимое папки, замените имя файла символом «*». Если вы хотите удалить в папке все файлы с расширением .txt (текстовый формат), вместо имени файла должно быть написано «*.txt» (без кавычек).
  • Чтобы удалить сразу несколько файлов, повторите вышеупомянутые шаги в том же текстовом документе.

Прежде чем начать

  1. Откройте диалоговое окно «Выполнить», введите «Explorer» и нажмите Enter. Чтобы открыть диалоговое окно «Выполнить», одновременно нажмите на клавиатуре Win+R.
  2. Нажмите Alt на клавиатуре (окно проводника должно быть активным).
  3. Нажмите на Инструменты > Параметры папок.
  4. Когда на экране появится окно «Параметры папок», перейдите на вкладку «Вид».
  5. Уберите галочку с опции «Скрывать расширения для зарегистрированных типов файлов», если она там стоит.
  6. Нажмите «ОК».

Часто нам задают вопросы вроде:

  • почему не работает bat-файл (т.е. скрипт)?;
  • почему скрипт не удаляет файлы с русскими буквами в названии?;
  • как правильно написать скрипт по удалению файлов и папок?

Самая частая проблема — это некорректная работа скрипта с кириллицей в названиях файлов и папок. И ниже вы увидите краткий пример скрипта для удаления файлов определённого типа из нужной папки с кириллицей в названии.

Создайте новый документ в AkelPad. Напишите строку. Мы в качестве примера пишем скрипт, который будет удалять файлы с расширением .torrent
в папке :

 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

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

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

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

 RMDIR /S /Q C:\Путь-до-директории
MKDIR C:\Путь-до-директории 

Ключь /S – удаление указанного каталога и всех содержащихся в нем файлов и подкаталогов.
Ключь /Q – Отключение запроса подтверждения при удалении.

Альтернативный рабочий вариант, это переход в указанную папку и указание на нее же при удалении

 CD "Путь-до-директории"
RMDIR . /S /Q 

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

Более сложный вариант, требует гораздо больше количества кода с учетом особенностей, например FOR игнорирует директории со скрытыми атрибутами, поэтому итоговый вариант пакетного BAT файла будет следующим:

 @ECHO OFF
SET THEDIR=название-директории-в-которой-происходит-удаление
Echo Удаляем все файлы в %THEDIR%
DEL "%THEDIR%\*" /F /Q /A
Echo Удаляем все директории в %THEDIR%
FOR /F "eol=| delims=" %%I in ('dir "%THEDIR%\*" /AD /B 2^>nul') do RMDIR /Q /S "%THEDIR%\%%I"
@ECHO Удаление завершено.
EXIT 
  1. Изображение с названием Delete a File in Microsoft Windows Using Batch Files Step 1

    Откройте Блокнот.
    Для этого нажмите на меню Пуск > Все программы > Стандартные > Блокнот.

  2. Изображение с названием Delete a File in Microsoft Windows Using Batch Files Step 2

    Введите в Блокнот «cd» (без кавычек).

  3. Изображение с названием Delete a File in Microsoft Windows Using Batch Files Step 3

    Найдите папку или файл, который хотите удалить, а затем нажмите на него правой кнопкой мыши и выберите «Свойства».

  4. Изображение с названием Delete a File in Microsoft Windows Using Batch Files Step 4

    Скопируйте данные из строки «Расположение».

  5. Изображение с названием Delete a File in Microsoft Windows Using Batch Files Step 5

    Вернитесь в Блокнот, поставьте один пробел после «cd» и вставьте скопированную информацию, заключив ее в кавычки.
    Например, если вы скопировали «C:\Пользователи\Администратор», тогда в блокноте будет написано “C:\Пользователи\Администратор” (с кавычками).

    • Если вы хотите удалить файлы из какой-то конкретной папки, но файла в ней нет, начните с третьего шага и введите его расположение.
  6. Изображение с названием Delete a File in Microsoft Windows Using Batch Files Step 6

    Нажмите Enter на клавиатуре, чтобы перейти на другую строку.

  7. Изображение с названием Delete a File in Microsoft Windows Using Batch Files Step 7

    Введите в новую строку Блокнота «del» (без кавычек).

  8. Изображение с названием Delete a File in Microsoft Windows Using Batch Files Step 8

    Поставьте пробел и введите название папки или файла с расширением (если оно у него есть), который хотите удалить, заключив его в кавычки.
    Например, если вы хотите удалить папку «Удали меня», значит, вам необходимо ввести следующее: del “Удали меня”. Если вы хотите удалить файл музыка.wav, введите del “музыка.wav”.

  9. Изображение с названием Delete a File in Microsoft Windows Using Batch Files Step 9

    Вверху Блокнота необходимо нажать Файл > Сохранить как.

  10. Изображение с названием Delete a File in Microsoft Windows Using Batch Files Step 10

    В окне «Сохранение» в строке «Тип файла:
    » выберите «Все файлы».

  11. Изображение с названием Delete a File in Microsoft Windows Using Batch Files Step 11

    В поле «Имя файла:
    » введите «ваше_имя.bat» (без кавычек).
    Вместо «ваше_имя» введите имя файла.

  12. Изображение с названием Delete a File in Microsoft Windows Using Batch Files Step 12

  13. Изображение с названием Delete a File in Microsoft Windows Using Batch Files Step 13

    Найдите новый файл там, куда вы его сохранили, и дважды по нему щелкните.
    Если вы все сделали правильно, файл/папка будет удалена.

    • Если появится окно с подтверждением, нажмите Y или Enter на клавиатуре.

DEL (ERASE)

Формат командной строки:

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

/P
– Запрос на подтверждение перед удалением каждого файла.

/F
– Принудительное удаление файлов, доступных только для чтения.

/S
– Удаление указанных файлов из всех подкаталогов.

/Q
– Отключение запроса на подтверждение при удалении файлов.

/A
– Отбор файлов для удаления по атрибутам.

S
– Системные файлы

R
– Доступные только для чтения

H
– Скрытые файлы

A
– Файлы для архивирования

Префикс “-” имеет значение НЕ – например -H
– не скрытый файл.

erase D:\myfile.txt
– удалить файл D:\myfile.txt

erase D:\
– удалить все файлы в корневом каталоге диска D:

erase D:\*.bak
– удалить все файлы с расширением .bak

в корневом каталоге диска D:

erase D:\files
– удалить все файлы в каталоге files
диска D:
– будут удалены
все файлы, не имеющие хотя бы один из атрибутов скрытый (H)
, системный (S)
и
только чтение ( R )

del /A:h d:\files\*.htm
– удалить все файлы с расширением htm
и атрибутом
скрытый
в каталоге D:\files
. Файлы, не имеющие атрибута скрытый
или
имеющие, дополнительно к нему, другие атрибуты, удаляться не будут.

del /A:hsra d:\files\*
– удалить все файлы с установленным набором атрибутов H , S, R, A

del d:\files\?d?*
– удалить файлы, имеющие в имени символ d
и любое расширение.

del /S /F /Q %TEMP%\*.tmp
– очистка каталога временных файлов.
Будут удалены все временные файлы с расширением .tmp
в каталоге
для временных файлов и всех его подкаталогах без запроса на подтверждение
удаления.


Весь список команд CMD Windows

 @echo off for /R "C:\Users\Admin\Ordner" %%f in (*.flv) do ( echo %%f
)
pause 

asked Jul 9, 2010 at 18:29

Poru's user avatar

You can use %%~nf
to get the filename only as described in the reference for for

:

 @echo off for /R "C:\Users\Admin\Ordner" %%f in (*.flv) do ( echo %%~nf
)
pause 
 Variable with modifier Description
%~I Expands %I which removes any surrounding quotation marks ("").
%~fI Expands %I to a fully qualified path name.
%~dI Expands %I to a drive letter only.
%~pI Expands %I to a path only.
%~nI Expands %I to a file name only.
%~xI Expands %I to a file extension only.
%~sI Expands path to contain short names only.
%~aI Expands %I to the file attributes of file.
%~tI Expands %I to the date and time of file.
%~zI Expands %I to the size of file.
%~$PATH:I Searches the directories listed in the PATH environment variable and expands %I to the fully qualified name of the first one found. If the environment variable name is not defined or the file is not found by the search, this modifier expands to the empty string. 

answered Jul 9, 2010 at 18:35

Dirk Vollmar's user avatar

Dirk Vollmar

53 gold badges
255 silver badges
316 bronze badges

In case the file your variable holds doesn’t actually exist the FOR
approach won’t work. One trick you could use, if you know the length of the extension, is taking a substring:

 %var:~0,-4% 

the -4
means that the last 4 digits (presumably .ext
) will be truncated.

answered Oct 1, 2013 at 17:51

Ohad Schneider's user avatar

Ohad Schneider

15 gold badges
167 silver badges
197 bronze badges

I am using this if I simply want to strip the extension from a filename or variable (without listing any directories or existing files):

 for %%f in ("%filename%") do set filename=%%~nf 

If you want to strip the extension from a full path, use %%dpnf
instead:

 for %%f in ("%path%") do set path=%%~dpnf 

(Use directly in the console)

 @for %f in ("file name.dat") do @echo %~nf
@for %f in ("C:\Dir\file.dat") do @echo %~dpnf
OUTPUT:
file name
C:\Dir\file 

answered Nov 7, 2018 at 10:14

marsze's user avatar

5 gold badges
45 silver badges
61 bronze badges

I’m also a stranger to windows cmd, but try this:

 echo %%~nf 

answered Jul 9, 2010 at 18:34

Vineet's user avatar

14 silver badges
9 bronze badges

This is a really late response, but I came up with this to solve a particular problem I had with DiskInternals LinuxReader appending ‘.efs_ntfs’ to files that it saved to non-NTFS (FAT32) directories :

 @echo off
REM %1 is the directory to recurse through and %2 is the file extension to remove
for /R "%1" %%f in (*.%2) do ( REM Path (sans drive) is given by %%~pf ; drive is given by %%~df REM file name (sans ext) is given by %%~nf ; to 'rename' files, move them copy "%%~df%%~pf%%~nf.%2" "%%~df%%~pf%%~nf" echo "%%~df%%~pf%%~nf.%2" copied to "%%~df%%~pf%%~nf"
echo.
)
pause 

answered Mar 29, 2013 at 21:29

Agi Hammerthief's user avatar

Agi Hammerthief

1 gold badge
22 silver badges
38 bronze badges

For instance %~dpn0
will return the path of the batch file without its extension, %~dpn1
will be %1
without extension, etc.

Whereas %~n0
will return the name of the batch file without its extension, %~n1
will be %1
without path and extension, etc.

The full thing is %~dpfn0
and it starts to make sense, when you take a closer look:

  • d
    is d
    rive
  • p
    is p
    ath
  • n
    is n
    ame
  • x
    is e x
    tension, and
  • fn
    is f
    ile n
    ame with extension

answered Mar 10, 2020 at 18:34

Martin Braun's user avatar

Martin Braun

9 gold badges
63 silver badges
103 bronze badges

Using cygwin bash to do the chopping

  :: e.g. FILE=basename.mp4 => FILE_NO_EXT=basename set FILE=%1 for /f "delims=" %%a in ('bash -c "FILE=%FILE%; echo ${FILE/.*/}" ') do set FILE_NO_EXT=%%a 

answered Jul 28, 2019 at 5:32

mosh's user avatar

15 silver badges
16 bronze badges

Параметры

[ диск
:
][ путь
] имя_файла
Задание расположения и имени файла для удаления. Параметр имя_файла
является
обязательным. Допускается использование нескольких имен файлов. Имена файлов следует
разделять пробелом, запятой или точкой с запятой.
/p
Задание удаления с подтверждением для каждого файла.
/f
Задание удаления файлов с атрибутом «Только чтение».
/s
Удаление заданных файлов в каталоге и всех его подкаталогах. Выводит имена удаляемых файлов.
/q
Задание автоматического режима. Не выводится подтверждение на удаление.
/a
Удаление файлов с заданными атрибутами.
атрибуты
Задание следующих атрибутов файла.
/?
Отображение справки в командной строке.

Del (erase)

Удаление заданных файлов.

Примеры

Чтобы удалить все файлы из папки Test на диске C, введите одну из следующих команд:

Параметры

[ диск
:
][ путь
] имя_файла
Задание расположения и имени файла для удаления. Параметр имя_файла
является
обязательным. Допускается использование нескольких имен файлов. Имена файлов следует
разделять пробелом, запятой или точкой с запятой.
/p
Задание удаления с подтверждением для каждого файла.
/f
Задание удаления файлов с атрибутом «Только чтение».
/s
Удаление заданных файлов в каталоге и всех его подкаталогах. Выводит имена удаляемых файлов.
/q
Задание автоматического режима. Не выводится подтверждение на удаление.
/a
Удаление файлов с заданными атрибутами.
атрибуты
Задание следующих атрибутов файла
/?
Отображение справки в командной строке.

Del (erase)

Удаление заданных файлов.

Об этой статье

Примеры

Чтобы удалить все файлы из папки Test на диске C, введите одну из следующих команд:

del c:\test

del c:\test\*.*

Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать
раздел форума

этого сайта (требуется регистрация).

:/>  Windows server 2012 что будет если не активировать windows