Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Условия bat файлом - проверить день и месяц создания

Ответить
Настройки темы
CMD/BAT - Условия bat файлом - проверить день и месяц создания

Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


Нужна помощь с пакетными файлами, хочу настроить сложную (как мне кажется, или просто сложную для моего уровня) систему резервного копирования данных (базы 1С).

на локальном компьютере есть 4 папки:
hour
day
month
year

в папке "hour" есть папки с часом когда запускается батник (08, 10, 12, и т.д.)
в папке "day" 31 папка соответственно дню месяца
в папке "month" 12 папок на каждый месяц
в папке "year" папки соответствующие году

с батниками которые архивируют, переименовывают(ЧЧММ_ДДММГГГГ.rar) и копируют каждые 2 часа я вроде как справился.

Пример батника на 16 часов

Код: Выделить весь код
rem Назначение переменной FileName даты и времени

For /F "Delims=." %%I In ('WMIC.exe OS Get LocalDateTime ^| Find "."') Do Set DT=%%I
set FileName=1CBK_1600_%DT:~6,2%%DT:~4,2%%DT:~0,4%
set timedate=16:00     %DT:~6,2%.%DT:~4,2%.%DT:~0,4%



if exist "D:\a\KDUNF8" GOTO step1
if not exist "D:\a\KDUNF8" GOTO error1

:step1

rem Архивирование и переименование

D:\rar\Rar.exe a "D:\b\%FileName%.rar" "D:\a\KDUNF8"


if exist "D:\b\%FileName%.rar" GOTO step2
if not exist "D:\b\%FileName%.rar" GOTO error2

:step2

rem Копирование нужного файла

copy "D:\b\%FileName%.rar" "D:\b\1_hour\16\%FileName%.rar" 

if exist "D:\b\1_hour\16\%FileName%.rar" GOTO step3
if not exist "D:\b\1_hour\16\%FileName%.rar" GOTO error3


:step3

rem запись лога

del /S /Q "D:\b\%FileName%.rar"

echo %timedate%      Успешно     Файл %FileName%.rar успешно создан и копирован >> "D:\a\result.log"

exit

:error1
echo %timedate%      Ошибка      Не найдена база KDUNF8>> "D:\a\result.log"

exit

:error2
echo %timedate%      Ошибка      Папка %FileName% не заархивирована>> "D:\a\result.log"

exit

:error3
echo %timedate%      Ошибка      Файл %FileName% не скопирован>> "D:\a\result.log"

exit
Собственно сам вопрос:
Нужно чтобы вечером после 22:00 каждого дня батник копировал нужную базу в нужный день папки Day, т.е. как я себе это представляю
условие: если в папке .../hour/22 есть архив созданный сегодня то нужно его скопировать в папку day сегодняшнего дня (удалив архив прошлого месяца) , если там его нет (вдруг свет маргнул), то тоже самое проверить в папке .../hour/20 и т.д. И если и в папке .../hour/08 тоже не нашел (вдруг целый день света небыло), то написать в логах, что нет архива за этот день

соответственно раз в месяц тоже самое проделывать. Допустим в феврале 28 дней, значит в папках 29,30 и 31 будут январские копии, нужно чтобы батник сравнил текущий месяц и месяц создания архива в папке .../day/31, выяснил что месяц прошлый, и залез в .../day/30. и так далее пока не найдет архив этого месяца и положит его в папку ...month/02 (ну или соответствующего месяца).

и по аналогии с папкой year

Буду очень признателен. Заранее спасибо

Отправлено: 19:43, 20-12-2013

 

Старожил


Сообщения: 280
Благодарности: 72

Профиль | Отправить PM | Цитировать


Только у меня создается что, как то сильно усложнили процедуру бэкапов.
Цитата r4zoom:
в папке "hour" есть папки с часом когда запускается батник (08, 10, 12, и т.д.) »
почему нельзя сделать одно задание с повтором каждые два часа?

Цитата r4zoom:
Нужно чтобы вечером после 22:00 каждого дня батник копировал нужную базу в нужный день папки Day, т.е. как я себе это представляю
условие: если в папке .../hour/22 есть архив созданный сегодня то нужно его скопировать в папку day сегодняшнего дня (удалив архив прошлого месяца) , если там его нет (вдруг свет маргнул), то тоже самое проверить в папке .../hour/20 и т.д. И если и в папке .../hour/08 тоже не нашел (вдруг целый день света небыло), то написать в логах, что нет архива за этот день »
Почему просто нельзя скриптом создать папку таким именем 2013_Март_25_14.00?
Насчет
Цитата r4zoom:
то написать в логах, что нет архива за этот день »
В принципе если нет файла, и так понятно что нет архива за этот день. от того что у вас там будет написано "Нет архива" толку мне кажется немного.

Ну и напоследок. вот пример на PS.
читать дальше »
Код: Выделить весь код
$source="D:\tmp\Test\1C\"
$destination="D:\tmp\Test\Backup"
$Time=Get-Date -UFormat "%Y_%m_%d_%H.%M"
$timex = get-date
$timex = $timex.AddDays(-31)
set-alias sevenZip "C:\Program Files\7-Zip\7za.exe"
New-Item -Type "Directory" -Path $destination\$Time
sevenZip a -t7z  $destination\$Time\1c.7z -ssw $source
dir $destination | where {$_.lastwritetime -le $timex} | del -Recurse -force


Делает бэкап папки в папку с именем "YYYY_mm_dd_HH.MM"
И удаляет все с датой последнего изменения свыше 31 день.

Отправлено: 13:40, 22-12-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Molchune:
Только у меня создается что, как то сильно усложнили процедуру бэкапов. »
Не только у Вас.

Отправлено: 00:45, 23-12-2013 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Условия bat файлом - проверить день и месяц создания

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Включение/отключение устройств одним .bat файлом BuSHmaker Скриптовые языки администрирования Windows 34 01-04-2019 21:57
CMD/BAT - [решено] Создание bat который будет создавать другой bat для создания 3 root13 Скриптовые языки администрирования Windows 5 27-10-2013 15:46
Разное - помогите с bat файлом vasmixser Программирование и базы данных 6 25-10-2013 12:05
CMD/BAT - Перезапустить службу bat файлом ruslanstep1 Программирование и базы данных 8 26-06-2013 13:03
Разное - странности с bat-файлом бУРов Microsoft Windows 7 0 05-03-2012 16:44




 
Переход