Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
CMD/BAT - Удаление файлов бэкапа с фильтром по времени.

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


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

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


Добрый день.

Напишите пожалуйста скрипт, или дайте ссылку на тему если уже обсуждалось, который удалял бы файлы из папки с бэкапами, кроме файлов за последнюю неделю, кроме файлов за каждое воскресенье в течение месяца и кроме файлов за каждое 1 число в течение года.

Есть папка, в которую ежедневно делаются бекапы в формате .zip (один раз, а может и два раза в день). Нужен скрипт, который удалял бы все файлы из данной папки, но оставил бы в ней:
- файлы за последние 7 дней
- файлы созданные каждое воскресенье в течение месяца
- файлы созданные каждое первое число месяца в течение года

Заранее благодарю за потраченное время!

Отправлено: 10:43, 02-04-2023

 

Ветеран


Contributor


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

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


Цитата fkshareware:
Есть папка, в которую ежедневно делаются бекапы в формате .zip (один раз, а может и два раза в день). »
Какой формат имеют имена файлов? Там присутствует дата/время? Приведите пример

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


Последний раз редактировалось megaloman, 02-04-2023 в 11:45.


Отправлено: 11:40, 02-04-2023 | #2



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

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


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


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

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


Цитата megaloman:
Какой формат имеют имена файлов? Там присутствует дата/время? Приведите пример »

Отправлено: 12:03, 02-04-2023 | #3


Deadooshka


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

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


в PS наверное что-то типа этого
Код: Выделить весь код
$seven = (Get-Date).AddDays(-7);
Get-ChildItem d:\TMP *.zip -File | Where-Object {$fdate = $_.LastWriteTime; $fdate -lt $seven -and $fdate.Day -ne 1 -and $fdate.DayOfWeek -ne 0} | Remove-Item
не надо картинки на зловредах публиковать
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:48, 02-04-2023 | #4


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


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

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


Цитата fkshareware:
Есть папка, в которую ежедневно делаются бекапы в формате .zip (один раз, а может и два раза в день). Нужен скрипт, который удалял бы все файлы из данной папки, но оставил бы в ней:
- файлы за последние 7 дней »
удаление старше 7дн
Код: Выделить весь код
FORFILES /p D:\backup\ /s /m *.* /d -7 /c "CMD /c del /Q @FILE"
каждое первое число месяца в течение года
Код: Выделить весь код
$src = 'd:\backup'
$dst = 'd:\archive'

Get-ChildItem $src -File -Recurse | Where-Object {$_.LastWriteTime.Day -eq 1  } | Copy-Item -Destination $dst -WhatIf
каждое воскресенье в течение месяца
Код: Выделить весь код
$Source_Path = "D:\Backup"
$folder_content = Get-ChildItem -LiteralPath $Source_Path
$Destination_Path = "D:\archive"
$Curr_date = get-date


Foreach($file in (Get-ChildItem -Recurse $folder_content))
{
if($file.CreationTime.DayOfWeek -eq "Sunday")
{
Copy-Item -Path $file.fullname -Destination $Destination_Path
}

}
раскидать 3 задания в планировщике

Отправлено: 09:27, 03-04-2023 | #5


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


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

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


Цитата Sham:
$seven = (Get-Date).AddDays(-7);
Get-ChildItem d:\TMP *.zip -File | Where-Object {$fdate = $_.LastWriteTime; $fdate -lt $seven -and $fdate.Day -ne 1 -and $fdate.DayOfWeek -ne 0} »
Нет, не то. Странная выборка получается:

Отправлено: 09:28, 03-04-2023 | #6


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата fkshareware:
Странная выборка получается: »
Попробуйте сформулировать, что именно странного в этой выборке? Но помните, что это список файлов на удаление... есть в этом списке файлы, не соответствующие Вашим условиям?

-------
scio me nihil scire. Ѫ

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

Отправлено: 11:19, 03-04-2023 | #7


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

fascinating rhythm


Moderator


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

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


Powershell:

Код: Выделить весь код
$t = get-date

$keep,$del = (dir d:\temp\*.zip).where({
$_.LastWriteTime -ge $t.Date.AddDays(-7) -or `
($_.LastWriteTime -ge $t.Date.AddMonths(-1) -and $_.LastWriteTime.DayOfWeek -eq "Sunday") -or `
($_.LastWriteTime -ge $t.Date.AddYears(-1) -and $_.LastWriteTime.Day -eq 1)
}, 'Split')

del $del -WhatIf
Сильно не проверял. Уберите -Whatif, чтобы реально удаляло. С -Whatif он только выведет лог, что бы он сделал.

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


Последний раз редактировалось DJ Mogarych, 03-04-2023 в 11:37.

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

Отправлено: 11:25, 03-04-2023 | #8


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


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

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


Цитата YuS_2:
Попробуйте сформулировать, что именно странного в этой выборке? Но помните, что это список файлов на удаление... есть в этом списке файлы, не соответствующие Вашим условиям? »
Точно. Я туплю. Спасибо, буду проверять.

Отправлено: 11:47, 03-04-2023 | #9


Аватара для YuS_2

Crazy


Contributor


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

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


fkshareware, только условия необходимо уточнить, а то ведь там разночтения возможны...
"В течении месяца" - какого месяца? Последнего, любого, каждого?
"В течении года" - те же вопросы...

-------
scio me nihil scire. Ѫ


Отправлено: 15:43, 03-04-2023 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Скрипт для проверки файлов по размеру и по времени NickTeilor Скриптовые языки администрирования Windows 8 23-04-2021 05:11
VBS/WSH/JS - [решено] Удаление файлов по маске/размеру/времени изменения nineline Скриптовые языки администрирования Windows 6 28-05-2015 08:36
CMD/BAT - [решено] Удаление созданных папок и файлов по времени zavoruev Скриптовые языки администрирования Windows 24 22-04-2013 10:36
В Windows 8 появится функция проверки файлов фильтром SmartScreen OSZone News Новости и события Microsoft 0 09-04-2011 11:30
Удаление записей из таблицы по заданному времени на php magwolf Вебмастеру 5 14-08-2009 14:13




 
Переход