Как с помощью планировщика заданий сделать резервную копию папки и удалить старые резервные копии

В настоящее время я делаю резервную копию папки на своем рабочем столе в другую папку каждые 6 часов с помощью планировщика заданий и пакетного файла с помощью xcopy. Как мне, скажем, удалить бэкапы старше 12 бэкапов? Например, если у меня уже есть 12 резервных копий, и это следующая 6-часовая отметка, она создает резервную копию исходной папки, а затем удаляет самую старую резервную копию, так как теперь их 13, так что остается только 12. И это повторяется, поэтому он циклически выполняет резервное копирование.

Мои папки отформатированы так: ГГГГ-ММ-ДД_ЧЧММ

(24-часовой формат)


person Shane Smiskol    schedule 24.04.2016    source источник


Ответы (1)


Вы были не очень ясны. Предполагая, что ваши резервные копии представляют собой папки с именами вроде BackupYYYYMMDD

dir /b /ad /o-n backup* дает вам ваши резервные папки (простой формат, только каталоги, отсортированные по имени (в обратном порядке, чтобы начать с самого нового) *)

Поместите это в for /f, чтобы проанализировать вывод, пропустив 12 строк, в результате чего:

for /f "skip=12 tokens=*" %%i in ('dir /b /ad /o-n backup*') do ECHO rd /s /q %%i

Удалите ECHO, когда вывод будет в порядке.

*) если у вас есть другой формат даты, лучше используйте /o-d (отсортировано по дате, сначала самые новые)

для резервных папок с именами вроде YYYY-MM-DD_HHMM вы можете использовать dir /b /ad /o-n ????-??-??_????, чтобы свести к минимуму вероятность того, что любые другие папки будут учтены или затронуты.

person Stephan    schedule 24.04.2016