Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
1 / 1 / 1
Регистрация: 18.12.2013
Сообщений: 47
1

Архивация лог-файлов старше трёх дней

12.06.2015, 14:47. Просмотров 1804. Ответов 1
Метки нет (Все метки)

Необходимо ежедневно архивировать лог файлы с датой ранее 3 дней от текущей даты в ту же папку, где находятся логи. Есть наброски кода:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@echo off
setlocal enabledelayedexpansion
rem  создаем переменную для запоминания текущей даты
rem пробелы в функции DATE заменяем нулями 
set NOW=%DATE: =0% %TIME: =0%  
for /f "tokens=1-7 delims=/-:., " %%a in ( "%NOW%" ) do (
  set EPOCH=%%c%%b%%a
)
 
rem каталог для архивов
md C:\Logs\logs_and_archive_days
ping localhost>C:\Logs\logs_and_archive_days\%EPOCH%.log
call :convert result1 "%NOW%"
call :convert result2 "%EPOCH%"
set THREE_DAYS_LENGTH="259200" rem длина 3 дней в секундах 
set a/ DIFF=%result1% - %result2%
if %DIFF% GTR %THREE_DAYS_LENGTH%
("C:\Program Files (x86)\WinRAR\WinRAR.exe" a  -dh -ed -agYYYY-MM-DD C:\Logs\logs_and_archive_days\ C:\Logs\logs_and_archive_days\*.log)
 
:convert
set result=%~2
set /a %1=%result:~8,2%%result:~3,2%%result:~0,2%%result:~11,2%%result:~14,2%
exit /b
понимаю, что код очень сырой, я только учусь. Надеюсь на помощь и взаимопонимание))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.06.2015, 14:47
Ответы с готовыми решениями:

Архивация файлов и удаление архивов старше семи дней
Ребята помогите сделать скрипт, плз. Суть такая - есть каталог, который сканируется на предмет...

Удаление файлов старше 10-ти дней
Приветствую Вас пользователи! Помогите с решением следующей задачи. Настроено ежедневное резервное...

Удаление файлов старше 3-х дней
Есть папка, в которую каждый день акронис складывает новые образы. Хочу сделать так, чтобы батник...

Перемещение файлов старше Х дней с сохранением структуры каталога
Доброго дня, уважаемые гуру :) Есть задача переместить старые файлы, сохранив структуру папок....

1
3133 / 1775 / 590
Регистрация: 26.04.2015
Сообщений: 5,871
17.06.2015, 16:44 2
Andrey20131992, Немного запоздал с ответом, занят был. Написал код, надо будет скачать и установить в system32 утилиту nircmd (есть тут на форуме - найдете), нужна для обновления даты модификации и обращения при запуске скрипта, тогда дата создания не "плывет" при сортировке, особенно, если происходит обращение к файлам в папке непосредственно, не автоматом, ну не важно. Диапазон в 3(три) дня можно изменить в строке 15 (set range=3) на другой.
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
@echo on
setlocal enabledelayedexpansion
set "qw=%Userprofile%\Desktop\Test"
rem Для изменения у всех файлов даты "модификации" "обращения" [на текущую]
"nircmd" setfiletime "%qw%\*" "" now now
rem Убираем лидирующий "0" из даты, если есть
for /f "tokens=* delims=0" %%d in ("%date%") do (
 set onosdate=%%d
rem Модифицируем дату к виду: "текущая дата-3(дня)"
 for /f "tokens=1-3 delims=.: " %%a in ("!onosdate!") do (
rem У кого английская поменять на %%c%%b%%a
  set sdate=%%a%%b%%c
rem У кого английская %%c%%b
  set dnoa=%%b%%c
  set range=3
  set /a newa=%%a-!range!
rem У кого английская !dnoa!!newa!
  set newsdate=!newa!!dnoa!))
rem Выделяем "дату создания" "имя" и "расширение" файлов (очень важна сортировка по дате и времени, порядок не важен)
for /f "tokens=1-8 delims=.: " %%i in ('dir/a-d/o-d/tc "%qw%"^| findstr/rc:"^[^ ]"') do (
rem У кого английская %%k%%j%%i
 set mydate=%%i%%j%%k
rem Убираем лидирующий "0" из даты, если есть
 for /f "tokens=* delims=0" %%q in ("!mydate!") do (
   set onomydate=%%q
   set "namemydate=%%o.%%p%%q"
rem Сравниваем "имя" "расширение" "заданная дата" = "имя" "расширение" "дата создания" файла
   if "%%o.%%p%newsdate%"=="!namemydate!" (
rem Дальше вольны делать с файлами, что захотим, например:
    copy "%qw%\%%o.%%p" "%Userprofile%\Desktop\Folder\")))
pause
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.06.2015, 16:44

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Получить даты файлов за несколько дней и вывести в лог (контроль даты файлов)
Добрый день нужен батник следующего функционала: есть папка с 8-ю зип архивами (ежесуточный...

Как выделить имена файлов, которые старше трёх дней?
пользую ls-lR | awk '{print $6, $7, $8}' > del_lst

Удаление файлов, которые старше 3х дней
Здравствуйте. Помогите пожалуйста. Нужно 2 скрипта для крона deb7: 1) удаление файлов,которые...

Удаление файлов старше N дней на FTP-сервере
Доброго дня! Есть скрипт по копированию файлов на FTP $Dir="***" $ftp = "*******" $user =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.