Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Удаление старых бэкапов по маске, оставляя нужное их количество. (http://forum.oszone.net/showthread.php?t=343420)

Slavyan_d 25-12-2019 11:52 2902085

Удаление старых бэкапов по маске, оставляя нужное их количество.
 
Помогите создать скрипт (батник). Задача:
есть папка Backup. в ней еще несколько папок куда сбрасываются бэкап файлы с расширением .bak
нужно раз в день удалять старые файлы (всех расширений) из всех папок, оставляя в каждой папке только 3 последних и только с расширением .bak

Iska 25-12-2019 20:27 2902187

Цитата:

Цитата Slavyan_d
только 3 последних »

Начните с определения «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
}


megaloman 25-12-2019 22:07 2902218

Код:

@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.

Время: 02:52.
© OSzone.net 2001-