|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Удаление всех файлов в папке бекап - кроме первой записи каждого месяца |
|
|
CMD/BAT - Удаление всех файлов в папке бекап - кроме первой записи каждого месяца
|
Новый участник Сообщения: 6 |
Профиль | Сайт | Отправить PM | Цитировать
Добрый день! Много пытался читать на форуме информации по необходимой мне информации, но в итоге всё рядом, но опыта не хватает всё собрать воедино, и реализовать.
Если вкратце, есть папка с бекапом, которая каждый день (ночью) - добавляет бекап за предыдущий день. В итоге за месяц получается 30 (28,31) - файлов с бекапом. Необходимо - удалить все файлы, как с расширением бекапа, так и любые другие, включая .txt (любые) - кроме первой даты каждого месяца. Останется за год - грубо говоря 12 файлов. (если например говорить за 2016 год). Останется 2017_01_01_dbbuh2014.dt , потом 2017_02_01_dbbuh2014.dt - ну и так далее. Скрин с папкой самой прилагаю. Нужно чтобы данный батник работал в конкретной папке. Чтобы другие папки в данной папке не трогал. Заранее буду признателен Вам за помощь. |
|
Отправлено: 08:12, 12-12-2017 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать fabble86@vk, для одноразового действия скрипты не нужны.
Far Manager, переходите в каталог, нажимаете серый плюс (на цифровой клавиатуре справа), вводите маску: нажимаете Ctrl-Enter, тем самым выделяя «лишние» файлы. Убедившись, что выделение верно, нажимаете Shift-Del, Enter. |
Отправлено: 09:00, 12-12-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 6
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Iska:
|
|
Отправлено: 09:08, 12-12-2017 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата fabble86@vk:
Ну, если не хотите пользовать Far Manager — вот Вам код на PowerShell: @( 'C:\Мои проекты\0137', 'C:\Мои проекты\0138', 'C:\Мои проекты\0139' ) | ForEach-Object -Process { if(Test-Path -LiteralPath $_ -PathType Container) { Get-ChildItem -LiteralPath $_ -File | ForEach-Object -Process { if($_.Name -notmatch '^\d{4}_\d{2}_01_dbbuh2014.dt$') { Remove-Item -LiteralPath $_.FullName -WhatIf } } } else { Write-Host "Can't find source folder [$_]." -ForegroundColor Red } } |
|
Отправлено: 09:40, 12-12-2017 | #4 |
Новый участник Сообщения: 6
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Iska:
Цитата Iska:
Цитата Iska:
Я поэтому и хотел это в формате батника, чтобы реализация была конкретно в 1 папке. Так мне кажется безопасней. Цитата Iska:
|
|||||
Отправлено: 09:51, 12-12-2017 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата fabble86@vk:
Цитата fabble86@vk:
Цитата fabble86@vk:
Цитата fabble86@vk:
Цитата Iska:
Цитата fabble86@vk:
|
||||||
Отправлено: 10:06, 12-12-2017 | #6 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать Цитата fabble86@vk:
@Echo Off Call :DirBack "Z:\Box_Arc\Папка с бэкапами 1\" "20??_??_??_*.dt" Call :DirBack "Z:\Box_Arc\Папка с бэкапами 2\" "20??_??_??_*.dt" Call :DirBack "Z:\Box_Arc\Папка с бэкапами 3\" "20??_??_??_*.dt" GoTo :Eof :DirBack Set "Last=" Set "Ext=" FOR /F "usebackq tokens=1,2,3* delims=_" %%i IN (`Dir /B /A:-D /O:EN "%~1%~2" 2^>nul`) DO Call :DelBack "%~1" "%%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 Цитата fabble86@vk:
Call :DirBack Если в папке находятся файлы по датам с разным расширением, и по каждому расширению надо оставить только один файл за месяц, укажите маску "20??_??_??_*.*" |
||
------- Последний раз редактировалось megaloman, 12-12-2017 в 14:28. Отправлено: 13:21, 12-12-2017 | #7 |
Новый участник Сообщения: 6
|
Профиль | Сайт | Отправить PM | Цитировать Цитата megaloman:
@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 Цитата megaloman:
|
||
Отправлено: 14:50, 12-12-2017 | #8 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать Я организовал у себя Вашу папку, добавил в скрипт некоторую защиту от неверных данных. У меня работает. Пробуйте
@Echo Off Call :DirBack "C:\Users\s.andrashenko\Desktop\New" "20??_??_??_*.dt" 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%\" 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 |
------- Отправлено: 18:02, 12-12-2017 | #9 |
Новый участник Сообщения: 6
|
Профиль | Сайт | Отправить PM | Цитировать Цитата megaloman:
Проверил, действительно работает. Спасибо Цитата megaloman:
И если можно данную строчку дописать. то куда её там вставить.. |
||
Отправлено: 06:42, 13-12-2017 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|