Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Удаление всех файлов в папке бекап - кроме первой записи каждого месяца

Ответить
Настройки темы
CMD/BAT - Удаление всех файлов в папке бекап - кроме первой записи каждого месяца

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Изображения
Тип файла: png Безымянный.png
(38.9 Kb, 4 просмотров)
Добрый день! Много пытался читать на форуме информации по необходимой мне информации, но в итоге всё рядом, но опыта не хватает всё собрать воедино, и реализовать.
Если вкратце, есть папка с бекапом, которая каждый день (ночью) - добавляет бекап за предыдущий день. В итоге за месяц получается 30 (28,31) - файлов с бекапом.

Необходимо - удалить все файлы, как с расширением бекапа, так и любые другие, включая .txt (любые) - кроме первой даты каждого месяца.
Останется за год - грубо говоря 12 файлов. (если например говорить за 2016 год). Останется 2017_01_01_dbbuh2014.dt , потом 2017_02_01_dbbuh2014.dt - ну и так далее.
Скрин с папкой самой прилагаю. Нужно чтобы данный батник работал в конкретной папке. Чтобы другие папки в данной папке не трогал.

Заранее буду признателен Вам за помощь.

Отправлено: 08:12, 12-12-2017

 

Ветеран


Contributor


Сообщения: 2703
Благодарности: 1683

Профиль | Отправить PM | Цитировать


fabble86@vk
Можно как-нибудь дописать строчку про удаление остальных файлов расширения .txt
Код: Выделить весь код
@Echo Off

Call :DirBack "C:\Users\s.andrashenko\Desktop\New" "20??_??_??_*.dt" "txt"

GoTo :Eof

:DirBack
	If Not Exist %1 (Echo Folder not found %1 &Pause &GoTo :Eof)
	Set "InDir=%~1"
	If Not "%InDir:~-1%"=="\" Set "InDir=%InDir%\"
	If Not "%~3"=="" FOR %%i IN (%~3) DO Del "%Indir%*.%%~i" 2>nul
	Set "Last="
	Set "Ext="
	FOR /F "usebackq tokens=1,2,3* delims=_" %%i IN (`Dir /B /A:-D /O:EN "%Indir%%~2" 2^>nul`) DO Call :DelBack "%Indir%" "%%i" "%%j" "%%k" "%%l"
GoTo :Eof

:DelBack
	If "%Last%"=="%~2%~3" If "%Ext%"=="%~x5" Del "%~1%~2_%~3_%~4_%~5" &GoTo :Eof
        Set "Last=%~2%~3"
	Set "Ext=%~x5"
GoTo :Eof
Можно указать несколько расширений для удаления,
Код: Выделить весь код
Call :DirBack "C:\Users\s.andrashenko\Desktop\New" "20??_??_??_*.dt" "txt jpg doc"
или, как и ранее, не удалять все файлы определённого расширения
Код: Выделить весь код
Call :DirBack "C:\Users\s.andrashenko\Desktop\New" "20??_??_??_*.dt"

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:58, 13-12-2017 | #11



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

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


Старожил


Сообщения: 255
Благодарности: 26

Профиль | Отправить PM | Цитировать


Если это семёрка и выше, то можно с помощью robocopy.

Код: Выделить весь код
set robotemp=d:\!BackUp\robotemp
MD %robotemp%
ROBOCOPY %Путь к вашей папке% %robotemp% /move /minage:30
del %robotemp% /q

Отправлено: 12:28, 13-12-2017 | #12


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Цитата megaloman:
@Echo Off
Call :DirBack "C:\Users\s.andrashenko\Desktop\New" "20??_??_??_*.dt" "txt"
GoTo :Eof
:DirBack
If Not Exist %1 (Echo Folder not found %1 &Pause &GoTo :Eof)
Set "InDir=%~1"
If Not "%InDir:~-1%"=="\" Set "InDir=%InDir%\"
If Not "%~3"=="" FOR %%i IN (%~3) DO Del "%Indir%*.%%~i" 2>nul
Set "Last="
Set "Ext="
FOR /F "usebackq tokens=1,2,3* delims=_" %%i IN (`Dir /B /A:-D /O:EN "%Indir%%~2" 2^>nul`) DO Call :DelBack "%Indir%" "%%i" "%%j" "%%k" "%%l"
GoTo :Eof
:DelBack
If "%Last%"=="%~2%~3" If "%Ext%"=="%~x5" Del "%~1%~2_%~3_%~4_%~5" &GoTo :Eof
Set "Last=%~2%~3"
Set "Ext=%~x5"
GoTo :Eof »
Cпасибо большое

Отправлено: 12:34, 13-12-2017 | #13



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Удаление всех файлов в папке бекап - кроме первой записи каждого месяца

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Удаление файлов старше N дней в подпаках, кроме файлов в самой папке Negtm Скриптовые языки администрирования Windows 4 03-02-2017 15:30
CMD/BAT - Bat, который бы удалял все файлы, кроме созданных в начале каждого месяца. Tyamich Скриптовые языки администрирования Windows 10 29-07-2016 17:10
CMD/BAT - [решено] Удаление всех файлов (всех типов) из всех подпапок, кроме расширений txt kot318 Скриптовые языки администрирования Windows 10 12-02-2015 15:48
CMD/BAT - Удаление всех файлов из папки кроме батника composter Скриптовые языки администрирования Windows 11 30-03-2013 08:25
CMD/BAT - Удаление всех файлов кроме одного в подпапках SELFY Скриптовые языки администрирования Windows 2 29-07-2012 15:34




 
Переход