|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Скрипт трущий нечётные бэкпы, которые старше определённого времени. |
|
|
CMD/BAT - Скрипт трущий нечётные бэкпы, которые старше определённого времени.
|
Старожил Сообщения: 290 |
Нужно тереть бэкапы (файлы oeГГГГ-ММ-ДД_23.rar) в папке C:\OE\OEBackUp\. Причём, не просто так, а которые старше 2х недель и из оставшихся, тереть нечётные.
Ибо за месяц, бэкапы вырастают до 50ГБ, а изменяются там всего несколько строк в БД. Будет всё это запускаться Планировщиком Windows раз в неделю. Плюс хотелось бы видеть лог в \\File_server\обмен\IT-Отдел\Logs\BackupDelete\Log.txt Заранее спасибо. |
|
Отправлено: 11:30, 03-05-2014 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать как часто создаются бэкапы? если они каждодневные, то можно сделать например так:
@echo off SETLOCAL ENABLEDELAYEDEXPANSION rem перебираем файлы по маске oe*23.rar с сортировкой по дате с самого свежего начиная с 15-го файла for /F "skip=14, delims=.rar" %%f in ('dir /B /O-D C:\OE\OEBackUp\oe*23.rar') do ( rem удаляем файлы и пишем в лог что и когда было удалено del /q /f "C:\OE\OEBackUp\%%f" && echo "C:\OE\OEBackUp\%%f deleted %date%" >> \\File_server\обмен\IT-Отдел\Logs\BackupDelete\Log.txt ) я бы рекомендовал для логов расшарить отдельную папку с доступом только для админов (все равно больше никто их читать не будет) и выделенную в коде курсивом часть поменять на \\file_server\logs |
Отправлено: 15:05, 03-05-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 290
|
Профиль | Отправить PM | Цитировать Elven, Я на сервере, где бэкапы, тупо расшарю папку и буду туда писать. Спасибо, завтра попоробую.
А скрипт именно нечётные удаляет даты? Бэкапы делаются каждый день. |
Отправлено: 16:55, 03-05-2014 | #3 |
Ветеран Сообщения: 2196
|
Профиль | Отправить PM | Цитировать Цитата i-Lex:
:: удаляем не чётные даты for /f "tokens=1-4 delims=_-" %%a in ('dir /b /s "C:\OE\OEBackUp\oe*_23.rar"') do ( set /a chet=%%c%%2 if "!chet!"=="1" echo del /f /q "%%a-%%b-%%c_%%d" ) Цитата Elven:
|
||
Отправлено: 18:50, 03-05-2014 | #4 |
Старожил Сообщения: 290
|
Профиль | Отправить PM | Цитировать Цитата sov44:
Цитата sov44:
@echo off SETLOCAL ENABLEDELAYEDEXPANSION rem перебираем файлы по маске oe*23.rar с сортировкой по дате с самого свежего начиная с 15-го файла for /F "skip=14, delims=.rar" %%f in ('dir /B /O-D C:\OE\OEBackUp\oe*23.rar') do ( rem удаляем файлы и пишем в лог что и когда было удалено del /q /f "C:\OE\OEBackUp\%%f" && echo "C:\OE\OEBackUp\%%f deleted %date%" >> \\File_server\обмен\IT-Отдел\Logs\BackupDelete\Log.txt ) :: удаляем не чётные даты for /f "tokens=1-4 delims=_-" %%a in ('dir /b /s "C:\OE\OEBackUp\oe*_23.rar"') do ( set /a chet=%%c%%2 if "!chet!"=="1" echo del /f /q "%%a-%%b-%%c_%%d" ) |
|||
Отправлено: 21:47, 03-05-2014 | #5 |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать @echo off chcp 1251>nul setlocal enabledelayedexpansion set "folder=C:\OE\OEBackUp" set "log=\\File_server\обмен\IT-Отдел\Logs\BackupDelete\Log.txt" ( set /p=%date% %time%<nul set "command=cmd /c del /a /f /q @file&& echo @file deleted" forfiles /p "%folder%" /d -14 /c "!command!" for /l %%i in (1 2 31) do ( set day=0%%i for %%j in ("%folder%\oe20??-??-!day:~-2!_23.rar") do ( del /a /f /q "%%~j" 2>nul&& ( echo "%%~nxj" deleted )) ) echo. )>>"%log%" endlocal exit /b |
Отправлено: 22:10, 03-05-2014 | #6 |
Ветеран Сообщения: 2196
|
Профиль | Отправить PM | Цитировать Цитата i-Lex:
Цитата i-Lex:
|
||
Отправлено: 08:10, 04-05-2014 | #7 |
Старожил Сообщения: 290
|
Профиль | Отправить PM | Цитировать Эм... Он снёс все бэкапы...
|
Отправлено: 11:41, 04-05-2014 | #8 |
Ветеран Сообщения: 2196
|
Профиль | Отправить PM | Цитировать Цитата i-Lex:
немного поправил код Elven, добавил свой @echo off SETLOCAL ENABLEDELAYEDEXPANSION :: перебираем файлы по маске oe*_23.rar с сортировкой всех файлов по дате от самых свежих, не обрабатывая первых 14 файлов. for /f "skip=14 delims=" %%f in ('dir /b /o-d "C:\OE\OEBackUp\oe*_23.rar" 2^>nul') do ( echo del /f /q "C:\OE\OEBackUp\%%f" && >>deleted.log echo. "C:\OE\OEBackUp\%%f deleted %date%" ) :: удаляем не чётные даты for /f "tokens=1-4 delims=_-" %%a in ('dir /b /s "C:\OE\OEBackUp\oe*_23.rar"') do ( set /a chet=%%c%%2 if "!chet!"=="1" echo del /f /q "%%a-%%b-%%c_%%d"&& >>deleted.log echo. C:\OE\OEBackUp\%%a-%%b-%%c_%%d ) |
|
Отправлено: 17:56, 04-05-2014 | #9 |
Старожил Сообщения: 290
|
Профиль | Отправить PM | Цитировать |
Отправлено: 07:18, 08-05-2014 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - [решено] Удаление логов, которые старше определенного периода | foma24 | Скриптовые языки администрирования Windows | 2 | 30-09-2013 18:51 | |
[решено] Скрипт: найти пользователя просидевшего больше всего времени. | Muro_like | Программирование в *nix | 4 | 20-11-2012 15:29 | |
VBS/WSH/JS - Помогите пожалуйста. Скрипт Удаления файлов старше 60 дней, исключая файлы по маске | KitsuNeko | Скриптовые языки администрирования Windows | 3 | 29-08-2012 13:55 | |
CMD/BAT - [решено] Выполнение блока команд после наступления определённого времени | SANIOK_AV | Скриптовые языки администрирования Windows | 2 | 07-08-2012 14:42 | |
[решено] Скрипт, изменяющий позицию курсора через определенный интервал времени | Vadikan | AutoIt | 2 | 28-07-2009 12:08 |
|