CMD/BAT - Удаление файлов бэкапа с фильтром по времени.
-
fkshareware
CMD/BAT - Удаление файлов бэкапа с фильтром по времени.
Добрый день.
Напишите пожалуйста скрипт, или дайте ссылку на тему если уже обсуждалось, который удалял бы файлы из папки с бэкапами, кроме файлов за последнюю неделю, кроме файлов за каждое воскресенье в течение месяца и кроме файлов за каждое 1 число в течение года.
Есть папка, в которую ежедневно делаются бекапы в формате .zip (один раз, а может и два раза в день). Нужен скрипт, который удалял бы все файлы из данной папки, но оставил бы в ней:
- файлы за последние 7 дней
- файлы созданные каждое воскресенье в течение месяца
- файлы созданные каждое первое число месяца в течение года
Заранее благодарю за потраченное время!
Напишите пожалуйста скрипт, или дайте ссылку на тему если уже обсуждалось, который удалял бы файлы из папки с бэкапами, кроме файлов за последнюю неделю, кроме файлов за каждое воскресенье в течение месяца и кроме файлов за каждое 1 число в течение года.
Есть папка, в которую ежедневно делаются бекапы в формате .zip (один раз, а может и два раза в день). Нужен скрипт, который удалял бы все файлы из данной папки, но оставил бы в ней:
- файлы за последние 7 дней
- файлы созданные каждое воскресенье в течение месяца
- файлы созданные каждое первое число месяца в течение года
Заранее благодарю за потраченное время!
-
megaloman
Re: CMD/BAT - Удаление файлов бэкапа с фильтром по времени.
Цитата fkshareware:
Есть папка, в которую ежедневно делаются бекапы в формате .zip (один раз, а может и два раза в день).
Какой формат имеют имена файлов? Там присутствует дата/время? Приведите пример
Есть папка, в которую ежедневно делаются бекапы в формате .zip (один раз, а может и два раза в день).
CMD/BAT - Удаление файлов бэкапа с фильтром по времени.
Какой формат имеют имена файлов? Там присутствует дата/время? Приведите пример
-
fkshareware
Re: CMD/BAT - Удаление файлов бэкапа с фильтром по времени.
Цитата megaloman:
Какой формат имеют имена файлов? Там присутствует дата/время? Приведите пример
Какой формат имеют имена файлов? Там присутствует дата/время? Приведите пример
CMD/BAT - Удаление файлов бэкапа с фильтром по времени.
-
Sham
Re: CMD/BAT - Удаление файлов бэкапа с фильтром по времени.
в 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не надо картинки на зловредах публиковать
-
John87
Re: CMD/BAT - Удаление файлов бэкапа с фильтром по времени.
Цитата fkshareware:
Есть папка, в которую ежедневно делаются бекапы в формате .zip (один раз, а может и два раза в день). Нужен скрипт, который удалял бы все файлы из данной папки, но оставил бы в ней:
- файлы за последние 7 дней
удаление старше 7дн
Код:
каждое первое число месяца в течение года
Код:
каждое воскресенье в течение месяца
Код:
раскидать 3 задания в планировщике
Есть папка, в которую ежедневно делаются бекапы в формате .zip (один раз, а может и два раза в день). Нужен скрипт, который удалял бы все файлы из данной папки, но оставил бы в ней:
- файлы за последние 7 дней
CMD/BAT - Удаление файлов бэкапа с фильтром по времени.
удаление старше 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 задания в планировщике
-
fkshareware
Re: CMD/BAT - Удаление файлов бэкапа с фильтром по времени.
Цитата 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}
Нет, не то. Странная выборка получается:
$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}
CMD/BAT - Удаление файлов бэкапа с фильтром по времени.
Нет, не то. Странная выборка получается:
-
YuS_2
Re: CMD/BAT - Удаление файлов бэкапа с фильтром по времени.
Цитата fkshareware:
Странная выборка получается:
Попробуйте сформулировать, что именно странного в этой выборке? Но помните, что это список файлов на удаление... есть в этом списке файлы, не соответствующие Вашим условиям?
Странная выборка получается:
CMD/BAT - Удаление файлов бэкапа с фильтром по времени.
Попробуйте сформулировать, что именно странного в этой выборке? Но помните, что это список файлов на удаление... есть в этом списке файлы, не соответствующие Вашим условиям?

-
DJ Mogarych
Re: CMD/BAT - Удаление файлов бэкапа с фильтром по времени.
Powershell:
Код:
Сильно не проверял. Уберите -Whatif, чтобы реально удаляло. С -Whatif он только выведет лог, что бы он сделал.
Код:
Код: Выделить всё
$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 он только выведет лог, что бы он сделал.
-
fkshareware
Re: CMD/BAT - Удаление файлов бэкапа с фильтром по времени.
Цитата YuS_2:
Попробуйте сформулировать, что именно странного в этой выборке? Но помните, что это список файлов на удаление... есть в этом списке файлы, не соответствующие Вашим условиям?
Точно. Я туплю. Спасибо, буду проверять.
Попробуйте сформулировать, что именно странного в этой выборке? Но помните, что это список файлов на удаление... есть в этом списке файлы, не соответствующие Вашим условиям?
CMD/BAT - Удаление файлов бэкапа с фильтром по времени.
Точно. Я туплю. Спасибо, буду проверять.
-
YuS_2
Re: CMD/BAT - Удаление файлов бэкапа с фильтром по времени.
fkshareware, только условия необходимо уточнить, а то ведь там разночтения возможны...
"В течении месяца" - какого месяца? Последнего, любого, каждого?
"В течении года" - те же вопросы...
"В течении месяца" - какого месяца? Последнего, любого, каждого?
"В течении года" - те же вопросы...