2015-11-26 2 views
2

Чтобы очистить нашу резервную папку, я написал короткий командный файл, который будет запущен через планировщик задач, чтобы периодически очищать все файлы, кроме трех последних копий ,Удаление всех файлов, кроме 3 последних в папке и вложенных папках

В настоящее время я следующее

for /f "skip=3 eol=: delims=" %%F in ('dir /b /o-d *.sqb ^| findstr /r /c:"LOG_.*"') do @del "%%F" 

Это будет работать для файлов внутри папки с командным файлом, однако я хотел бы, чтобы запустить его с более высокого уровня, чтобы проверить все резервные копии, я попытался командование/с, но это только оставляет 3 самый последний из всех папок, где, как мне нужно, чтобы держать 3 самых последних файлов в каждой папке и подпапках

+1

Я предлагаю обернуть 'for/R/D', в котором рекурсивно перечисляется каталог ... – aschipfl

ответ

1

Loop рекурсивно каталогов первым:

for /r /d %%a in (*) do (
    for /f "skip=3 eol=* delims=" %%b in ('dir /b /a-d /o-d "%%a\*LOG*.sqb"') do (
     del "%%~fb" 
    ) 
) 2>nul 
+0

Кажется, что запущена ошибка, когда она ищет один из файлов в подкаталоге в основном каталоге. – Torin

+0

Да, см. Обновленный код, теперь используется полный путь – wOxxOm

Смежные вопросы