Удаление старых бэкапов по маске, оставляя нужное их количество.
Помогите создать скрипт (батник). Задача:
есть папка Backup. в ней еще несколько папок куда сбрасываются бэкап файлы с расширением .bak
нужно раз в день удалять старые файлы (всех расширений) из всех папок, оставляя в каждой папке только 3 последних и только с расширением .bak
|
Начните с определения «3 последних файла .bak» — последних по времени создания или по времени последней модификации?
|
DJ Mogarych |
25-12-2019 20:42 2902192 |
Powershell, фильтр по времени создания
Код:
del c:\backup\* -Exclude "*.bak" -Recurse -Force -Confirm:$false
foreach ($dir in (gci c:\backup -Directory -recurse).fullname) {
gci "$dir\*.bak" |sort creationtime |select -SkipLast 3 |del -Force -Confirm:$false
}
|
Код:
@Echo Off
Set "Fold=Z:\Backup"
Set "Mask=*.bak"
Set /A N=3
Call :MyDel "%Fold%\" "%Mask%" %N%
FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "%Fold%" /S /B /A:D`) Do Call :MyDel "%%d\" "%Mask%" %N%
Exit /B 0
:MyDel
FOR /F "usebackq skip=%3 delims=" %%i IN (`2^>nul Dir "%~1\%~2" /B /O:-D /A:-D`) DO Del "%~1%%i"
FOR /F "usebackq delims=" %%i IN (`2^>nul Dir "%~1\*.*" /B /O:-D /A:-D`) DO If /I Not "%%~xi"=="%~x2" Del "%~1%%i"
Exit /B
|
Время: 02:52.
© OSzone.net 2001-