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

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

Ответить
Настройки темы
CMD/BAT - Удаление старых бэкапов по маске, оставляя нужное их количество.

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


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

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


Помогите создать скрипт (батник). Задача:
есть папка Backup. в ней еще несколько папок куда сбрасываются бэкап файлы с расширением .bak
нужно раз в день удалять старые файлы (всех расширений) из всех папок, оставляя в каждой папке только 3 последних и только с расширением .bak

Отправлено: 11:52, 25-12-2019

 

Ветеран


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

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


Цитата Slavyan_d:
только 3 последних »
Начните с определения «3 последних файла .bak» — последних по времени создания или по времени последней модификации?

Отправлено: 20:27, 25-12-2019 | #2



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

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


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Powershell, фильтр по времени создания
Код: Выделить весь код
del c:\backup\* -Exclude "*.bak" -Recurse -Force -Confirm:$false
foreach ($dir in (gci c:\backup -Directory -recurse).fullname) {
gci "$dir\*.bak" |sort creationtime |select -SkipLast 3 |del -Force -Confirm:$false
}

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 20:42, 25-12-2019 | #3


Ветеран


Contributor


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

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


Код: Выделить весь код
@Echo Off
	Set "Fold=Z:\Backup"
	Set "Mask=*.bak"
	Set /A N=3

	Call :MyDel "%Fold%\" "%Mask%" %N%
	FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "%Fold%" /S /B /A:D`) Do Call :MyDel "%%d\" "%Mask%" %N%
Exit /B 0

:MyDel
      FOR /F "usebackq skip=%3 delims=" %%i IN (`2^>nul Dir "%~1\%~2" /B /O:-D /A:-D`) DO Del "%~1%%i"
      FOR /F "usebackq delims=" %%i IN (`2^>nul Dir "%~1\*.*" /B /O:-D /A:-D`) DO If /I Not "%%~xi"=="%~x2" Del "%~1%%i"
Exit /B

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

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

Отправлено: 22:07, 25-12-2019 | #4



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Удаление старых файлов/папок если их кол-во больше n greenOwl Скриптовые языки администрирования Windows 35 14-01-2023 08:34
CMD/BAT - [решено] Удаление старых файлов по дате и имени, если их больше n NinjaScript Скриптовые языки администрирования Windows 2 04-03-2015 14:27
CMD/BAT - [решено] Удаление старых файлов по дате (маске) cons74 Скриптовые языки администрирования Windows 2 23-06-2014 08:00
VBS/WSH/JS - [решено] удаление старых файлов по маске support23 Скриптовые языки администрирования Windows 1 03-06-2013 08:41
CMD/BAT - Поиск файлов по маске и их замена другими. lexxstr Скриптовые языки администрирования Windows 0 20-12-2012 22:54




 
Переход