Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
Serik2010
1 / 1 / 2
Регистрация: 01.04.2010
Сообщений: 46
1

Батник для удаления файлов из папки с фильтром

21.02.2014, 02:36. Просмотров 4888. Ответов 8
Метки нет (Все метки)

Привет всем!

Столкнулся с таким вопросом. Нужно написать для удобства батник, который будет чистить ВСЁ рядом с собой (папки и файлы) КРОМЕ файлов с определённым расширением.

Как такое реализовать? Нашёл следующее:
Удаление содержимое папки с подтверждением
Код
echo Y| del d:\file\
Слышал, что есть также цикл.

Вот как я вижу на ПСЕВДО-коде:

Код
FOR %%i in (ТЕКУЩАЯ ПАПКА) do (IF NOT РАСШИРЕНИЕ = *doc OR NOT РАСШИРЕНИЕ = *txt (echo Y| del d:\file\%%i))
Буду очень признателен за помощь. Заранее спасибо!
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2014, 02:36
Ответы с готовыми решениями:

Батник для удаления папки перед загрузкой windows 7
нужен батник для удаления папки перед загрузкой windows7 нужны такие действия, перед загрузкой...

Батник для удаления определённых файлов
Здравствуйте! в корне диска D каждый день создается батником файлы с текущей датой, то есть...

Батник для копирования и удаления определенных файлов
Всем привет! Задача такая. Есть папка на диске С куда падают файлы разных мастей, в то же время в...

Батник удаления файлов во вложенных папках
Добрый день. Есть папка ГлавнаяПапка, в ней есть папки Папка1, Папка2, Папка3, Папка4 и т.д. В...

Батник для удаления
Доброго времени суток! Помогите написать батничек. Нужно сделать чтобы файлы с определенными...

8
Dragokas
Эксперт WindowsАвтор FAQ
17055 / 7110 / 861
Регистрация: 25.12.2011
Сообщений: 10,920
Записей в блоге: 16
22.02.2014, 18:59 2
Так и есть. Все примерно выглядит, как Вы написали:

Bash
1
for %%i in ("%~dp0*") do if /i not "%%~xi"==".doc" if /i not "%%~xi"==".txt" del /F "%%~fi"
1
Serik2010
1 / 1 / 2
Регистрация: 01.04.2010
Сообщений: 46
26.02.2014, 00:49  [ТС] 3
Спасибо! Приведенный код работает, но есть маленькое НО! Возможно, я не уточнил.

Батник с этим кодом удаляет все ФАЙЛЫ которые лежат рядом с ним и САМ удаляется...

1. не нужно чтобы он удалялся
2. подскажите, что нужно добавить, чтобы удалять еще ВСЕ папки, которые лежат рядом?

Заранее спасибо.
0
Dragokas
Эксперт WindowsАвтор FAQ
17055 / 7110 / 861
Регистрация: 25.12.2011
Сообщений: 10,920
Записей в блоге: 16
26.02.2014, 01:02 4
Сорри, должен был догадаться
Можно.

Bash
for %%i in ("%~dp0*") do if /i not "%%~xi"==".doc" if /i not "%%~xi"==".txt" if /i not "%%~fi"=="%~f0" del /F "%%~fi"
1
Serik2010
1 / 1 / 2
Регистрация: 01.04.2010
Сообщений: 46
26.02.2014, 01:08  [ТС] 5
Ага, 1-ая проблема решена - он не удаляется, а как быть со второй? с директориями?

и еще простите за наглость, можно ли еще добавить как-то маску по файлу, типа если содержит в имени, например "FC", то удалять, даже если формат "*.txt".

заранее спасибо
0
Dragokas
Эксперт WindowsАвтор FAQ
17055 / 7110 / 861
Регистрация: 25.12.2011
Сообщений: 10,920
Записей в блоге: 16
26.02.2014, 01:58 6
Цитата Сообщение от Serik2010 Посмотреть сообщение
удалять еще ВСЕ папки, которые лежат рядом?
тупо все без разбора?

Bash
1
rd /S /Q "%~dp0*"
только в корне C: не запустите, случайно !
Цитата Сообщение от Serik2010 Посмотреть сообщение
добавить как-то маску по файлу, типа если содержит в имени, например "FC", то удалять, даже если формат "*.txt".
Дописать еще такую строку:

Bash
1
del /F /A /Q "%~dp0*FC*"
Главное батник так не назвать

Добавлено через 3 минуты
P.S. приведенный ранее цикл не будет работать со скрытыми и системными файлами.

Добавлено через 5 минут
Цитата Сообщение от Dragokas Посмотреть сообщение
rd /S /Q "%~dp0*"
а стоп. Забыл. Она с масками не работает.
Так правильно:

Bash
1
For /D %%a in ("%~dp0*") do rd /s /q "%%a"
1
Serik2010
1 / 1 / 2
Регистрация: 01.04.2010
Сообщений: 46
26.02.2014, 02:01  [ТС] 7
Такс, теперь если подытожить. Получается код:
Bash
1
for %%i in ("%~dp0*") do if /i not "%%~xi"==".fits" if /i not "%%~xi"==".fts" if /i not "%%~xi"==".fit"  if /i not "%%~fi"=="%~f0" del /F "%%~fi" rd /S /Q "%~dp0*" del /F /A /Q "%~dp0*FCLT*"
это как он в действительности, не работает и не удаляет...

можно ли как-то улучшить код, чтобы хоть было понятно что куда относится. просто из логики я вижу так:

Bash
1
2
3
4
5
6
for %%i in ("%~dp0*") do (
del /F /A /Q "%~dp0*FCLT*"
       (if /i not "%%~xi"==".fits" if /i not "%%~xi"==".fts" if /i not "%%~xi"==".fit"  if /i not "%%~fi"=="%~f0" (
                del /F "%%~fi" rd /S /Q "%~dp0*")
       )
)
Добавлено через 1 минуту
Цитата Сообщение от Dragokas Посмотреть сообщение
For /D %%a in ("%~dp0*") do rd /s /q "%%a"

Т.е. это нужно добавлять отдельным циклом? а то я слегка уже запутался...

Подправьте пожалуйста мой код.
0
Dragokas
Эксперт WindowsАвтор FAQ
17055 / 7110 / 861
Регистрация: 25.12.2011
Сообщений: 10,920
Записей в блоге: 16
26.02.2014, 02:13 8
Лучший ответ Сообщение было отмечено Serik2010 как решение

Решение

Bash
1
2
3
4
5
@echo off
SetLocal EnableExtensions
for %%i in ("%~dp0*") do if /i not "%%~xi"==".doc" if /i not "%%~xi"==".txt" if /i not "%%~fi"=="%~f0" del /F "%%~fi"
For /D %%a in ("%~dp0*") do rd /s /q "%%a"
del /F /A /Q "%~dp0*FC*"
1
Serik2010
1 / 1 / 2
Регистрация: 01.04.2010
Сообщений: 46
26.02.2014, 02:17  [ТС] 9
Громаднейшее спасибо!!! Выручили! +1
0
26.02.2014, 02:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2014, 02:17

Батник для полного удаления Денвера
Нужна помощь с написанием батника, требуется перед полным удалением Денвера скопировать папку...

Создать батник, при запуске которого будет показываться размер папок и файлов текущей папки
Всем привет!:) Пришла на форум за помощью. Я новичок%-) Мне нужно создать батник, при запуске...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru