Написать пакетный файл, чтобы удалить все, кроме последних X файлов каждого типа - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь создать пакетный файл, который должен запускаться один раз в день, который должен удалять все файлы резервных копий, кроме самых последних, скажем, 2 каждого типа. Поэтому у меня есть такие файлы, как:

  • резервное копирование DAILY-2018-11-13_000000.bak
  • резервное копирование DAILY-2018-11-12_000000.bak
  • резервное копирование DAILY-2018-11-11_000000.bak

  • резервное копирование ЧАСЫ-2018-11-13_110000.bak

  • резервное копирование ЧАСОВ-2018-11-13_130000.bak
  • резервное копирование ЧАСОВ-2018-11-13_150000.bak

и т.д.

Итак, мой скрипт выглядит следующим образом

@ECHO off

SET frequency=%*
for %%x in (%frequency%) do (
  for /f "*-%%x*" %%a in ('dir /ad /b /o-d^|more +2') do echo @file
)

но я получаю ошибку *-%x*" was unexpected at this time.

Что нужно сделать сценарию, так это то, что после его запуска каждый день у меня должны быть последние 2 файла резервной копии каждого типа (ЕЖЕДНЕВНО, ЧАСЫ). Сейчас я просто пытаюсь распечатать файлы, которые нужно сохранить.

Так что я должен остаться с

  • резервное копирование DAILY-2018-11-13_000000.bak
  • резервное копирование DAILY-2018-11-12_000000.bak

  • резервное копирование ЧАСЫ-2018-11-13_130000.bak

  • резервное копирование ЧАСОВ-2018-11-13_150000.bak

1 Ответ

0 голосов
/ 13 ноября 2018

Я не уверен, что именно вы пытаетесь достичь с помощью частоты, но, тем не менее, я сосредоточусь на том, чего вы на самом деле хотите достичь:

for /F "skip=2 eol=: delims=" %%i in ('dir /b /o-d *DAILY*') do echo "%%i"
for /F "skip=2 eol=: delims=" %%i in ('dir /b /o-d *HOURLY*') do echo "%%i"

Итак, что происходит, мы сортируем по дате в обратном порядке, затем пропускаем первые 2 файла (самые последние) и удаляем остальные, мы просто запускаем 2 отдельных цикла для каждого типа, ежечасно и ежедневно. Его можно включить в один цикл for, но я думаю, что это достаточно просто.

Очевидно, замените echo на del, как только вы подтвердите, что он делает то, что вы хотите ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...