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

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

12.06.2015, 14:47. Просмотров 1150. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2015, 14:47
Ответы с готовыми решениями:

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

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

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

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

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

1
alpap
1916 / 1409 / 467
Регистрация: 26.04.2015
Сообщений: 4,808
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.06.2015, 16:44

Удаление папок старше n дней
Доброго времени суток! Помогите написать батник который делал бы следующее в заданный папках...

Создать задачу по удалению всех архивов старше 10 дней
Здравствуйте, возник такой вопрос ,а можно ли сделать задачу по удаления с жесткого диска все...

Перемещение файлов старше 30 минут
Необходим батник, который проверяет файлы(их всегда несколько) в определенной папке(папка 1) и если...


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

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

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