Удаление всех файлов в папке бекап - кроме первой записи каждого месяца
Вложений: 1
Добрый день! Много пытался читать на форуме информации по необходимой мне информации, но в итоге всё рядом, но опыта не хватает всё собрать воедино, и реализовать.
Если вкратце, есть папка с бекапом, которая каждый день (ночью) - добавляет бекап за предыдущий день. В итоге за месяц получается 30 (28,31) - файлов с бекапом. Необходимо - удалить все файлы, как с расширением бекапа, так и любые другие, включая .txt (любые) - кроме первой даты каждого месяца. Останется за год - грубо говоря 12 файлов. (если например говорить за 2016 год). Останется 2017_01_01_dbbuh2014.dt , потом 2017_02_01_dbbuh2014.dt - ну и так далее. Скрин с папкой самой прилагаю. Нужно чтобы данный батник работал в конкретной папке. Чтобы другие папки в данной папке не трогал. Заранее буду признателен Вам за помощь. |
fabble86@vk, для одноразового действия скрипты не нужны.
Far Manager, переходите в каталог, нажимаете серый плюс (на цифровой клавиатуре справа), вводите маску: Код:
*.*|/\d{4}_\d{2}_01_dbbuh2014.dt/ |
Цитата:
|
Цитата:
Ну, если не хотите пользовать Far Manager — вот Вам код на PowerShell: Код:
@( |
Цитата:
Цитата:
Цитата:
Я поэтому и хотел это в формате батника, чтобы реализация была конкретно в 1 папке. Так мне кажется безопасней. Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Код:
@Echo Off Цитата:
Call :DirBack Код:
Call :DirBack "%~dp0" "20??_??_??_*.dt" "20??_??_??_*.*" |
Цитата:
@Echo Off Call :DirBack "C:\Users\s.andrashenko\Desktop\New" "20??_??_??_*.dt" GoTo :Eof :DirBack Set "Last=" FOR /F "usebackq tokens=1,2,3* delims=_" %%i IN (`Dir /B /A:-D /O:N "%~1%~2" 2^>nul`) DO Call :DelBack "%~1" "%%i" "%%j" "%%k" "%%l" GoTo :Eof :DelBack If Not "%Last%"=="%~2%~3" Set "Last=%~2%~3" &GoTo :Eof echo Del "%~1%~2_%~3_%~4_%~5" GoTo :Eof Цитата:
|
Я организовал у себя Вашу папку, добавил в скрипт некоторую защиту от неверных данных. У меня работает. Пробуйте
Код:
@Echo Off |
Цитата:
Проверил, действительно работает. Спасибо Цитата:
И если можно данную строчку дописать. то куда её там вставить.. |
fabble86@vk
Можно как-нибудь дописать строчку про удаление остальных файлов расширения .txt
Код:
@Echo Off Код:
Call :DirBack "C:\Users\s.andrashenko\Desktop\New" "20??_??_??_*.dt" "txt jpg doc" Код:
Call :DirBack "C:\Users\s.andrashenko\Desktop\New" "20??_??_??_*.dt" |
Если это семёрка и выше, то можно с помощью robocopy.
Код:
set robotemp=d:\!BackUp\robotemp |
Цитата:
|
Время: 13:48. |
Время: 13:48.
© OSzone.net 2001-