Изменить: После ответа @Mbu я понял, что мой первый подход с ведущими числами в папках в качестве критериев для исключения не является правильным способом. Я решил использовать фиксированный список папок для исключения.
Я хочу удалить определенные файлы с помощью пакета, но исключить заданный набор путей для проверки
Пример структуры
E:.
|───MyBatchFile.cmd
|
├───yes
│ │ no.doc | file has wrong extension
│ │ yes.cfg
│ │ yes.dat
│ │ yes.hgr
│ │
│ └───yes
│ yes.cfg
│ yes.dat
│ yes.hgr
│
├───yes
│ yes.cfg
│ no.dat | file is too new, modified within a year
│ no.hgr | file is too new, modified within a year
│
|───no1 | folder is on blacklist
| importantstuff
│
└───no2 | folder is on blacklist
importantstuff
Имена файлов yes и no показывают, какие файлы должны быть удалены
Что я хочу
Поиск всех файлов во всех папках и подпапках, начиная с папки, в которой находится пакет. Если выполняются все следующие условия, удалите файл
- расширение файла .cfg, .dat, .hgr или .txt
- модифицированное время более 365 дней
- Путь не в черном списке
Что я пробовал
Исходя из этого вопроса, у меня есть:
@echo off
for %%i in (.cfg, .dat, .hdr, .txt) do (
forfiles /s /m *%%i /d -365 /c "cmd /c del @path"
)
pause
Два из трех вопросов решены, но как исключить данный набор папок.
Как E:\no1
и E:\no2
из моего примера.