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

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

Ответить
Настройки темы
CMD/BAT - Выгрузка по рабочим дням

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


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

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


Добрый день.

Есть такая задача выгружать архив клиентов на FTP, 15 и 30 числа, но если эти дни приходятся на праздник или выходной то выгружаем ранее.
Bat файл выгрузки мной уже написан, а вот не могу сообразить как написать проверку, помогите пожалуйста. Хочется автоматизировать эту задачу.
Также хочется чтобы была проверка по файлу в котором указаны праздничные дни, и если праздники то выгрузить ранее.
Также есть проблема с Февралем там 28 дней, то есть выгрузка 28 или ранее, если попадает выходной на 28.

Пример:
Сегодня 28 число, Пятница, 30 число попадает на Воскресение, но нужно выгрузить сегодня.

Взял код из темы "CMD/BAT - [решено] Переменная Дня недели" все хорошо но не соображу какой алгоритм проверки сделать, подскажите кто чем может.

Отправлено: 09:37, 29-06-2018

 

Ветеран


Contributor


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

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


kddkda, С выходными - задача решаемая. (кстати - что такое "выходной" - только воскресенье?) Но насчёт праздников ... Не знаю, какие у Вас законы, но у нас частенько перед праздниками практикуется перенос рабочих дней, чтобы увеличить число нерабочих дней вподряд (тут уж понятие "выходные" может извращаться как угодно). У нас есть такой праздник -Пасха, а за ним и Радуница(у нас нерабочий день), который в каждом году приходится на свой день.
ИМХО, решение задачи - задать в батнике на год (или более) расписание дней, когда надо чего-то там делать, и ежедневно в планировщике заданий этот батник запускать.
Либо изменить постановку задачи: 1 и 15 (или 14) число есть всегда.
Логика 1 числа: если нет архива текущего месяца - сделать его.
Логика 15 числа: если за текущий месяц нет архива за число >= 15, делаем его.
Наверное, в этом случае на каждую выгрузку надо будет создать лог-файл с именем по дате выгрузки.

Выбирайте, что Вас устроит, можно затем предлагать код командного файла.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 29-06-2018 в 11:03.


Отправлено: 10:51, 29-06-2018 | #2



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

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


Старожил


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

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


Цитата megaloman:
задать в батнике на год (или более) расписание дней, когда надо чего-то там делать, и ежедневно в планировщике заданий этот батник запускать. »
+добавить напоминалку о том что год заканчивается надо батник изменить

Отправлено: 11:42, 29-06-2018 | #3


Ветеран


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

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


Цитата tiss42rus:
надо батник изменить »
скорее файл txt-список дат, запуск перед концом года задачей из планировщика.

Отправлено: 13:21, 29-06-2018 | #4


Аватара для Elven

Ветеран


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

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


Цитата megaloman:
задать в батнике на год (или более) расписание дней, когда надо чего-то там делать, и ежедневно в планировщике заданий этот батник запускать. »
А больше чем на год и не получится. Учитывая количество праздников, которые нужно учесть, переносы рабочих дней, которые меняются год от года. Даже на год затруднительно будет составить, но это еще худо-бедно возможно. Как шаг к упрощению ежегодной работы - список дней запуска (или список выходных, что нелогично ибо их будет сильно больше) хранить не в самом батнике, а в отдельном файле, и редактировать уже его.
Вариант проверки при таком раскладе будет, к примеру, таким:

файл с датами запуска.txt
Код: Выделить весь код
01.01.2018
15.01.2018
01.02.2018
15.02.2018

проверка
Код: Выделить весь код
findstr %date% "файл с датами запуска.txt" && (
echo выполняем какие-то действия) || (
echo не выполняем ничего)
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:18, 29-06-2018 | #5


Ветеран


Contributor


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

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


Вот батник с расписанием. Меня напрягает, если батник будет ссылаться на какой-то текстовый файл. Этот батник можно таскать куда угодно, не задумываясь о сопутствующем файле
Код: Выделить весь код
@Echo Off
cls
rem          1        1        2        2        3        3        4        4        5        5        6        6        7        7        8        8        9        9        10       10       11       11       12       12
Set Schedule=20180115 20180131 20180215 20180228 20180315 20180330 20180413 20180430 20180515 20180531 20180615 20180629 20180715 20180730 20180815 20180831 20180914 20180928 20181015 20181030 20181115 20181130 20181214 20181228 

Set /A Log=-1
FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "@Tdate=%%d"
FOR %%i IN (%Schedule%) DO Set "MPlan=%%i" &Call :Logic %%@Tdate:~0,8%% %%@Tdate:~0,6%% %%i %%MPlan:~0,6%%

If %Log% EQU 0 Echo Nothing to do &Exit /B 0
If %Log% EQU -1 Call :ErrorDo %@Tdate:~0,6%% &Exit /B 1
If %Log% EQU 1  Call :UpLoad 

Exit /B 0

:Logic
	If %Log% LEQ 0 If %2==%4 Set /A Log=0
	If %1==%3 Set /A Log=1
GoTo :Eof

:ErrorDo
	Echo No scheduled for this month %1
	Pause
GoTo :Eof

:UpLoad
	Echo Upload backup
GoTo :Eof
Если за текущий месяц нет плана выгрузки, вызывается процедура :ErrorDo для аварийного сообщения. Сейчас там банальное Echo, хотя можно придумать способ оповещения по сети или через E-Mail
Если надо сделать выгрузку, можно её вставить в процедуру :UpLoad, сейчас там просто Echo
Для получения текущей даты применил WMIC, чтобы не задумываться о выбранном формате даты в системе

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:08, 29-06-2018 | #6


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


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

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


Доброе Утро.

Спасибо за ответы, извиняюсь что долго не отвечал.

Мысль такая появилась, проверяем ТДата +1, если выходной (Суббота или Воскресенье) или праздник, то выгрузить сегодня.
Так как все государственные праздники известны то их можно забить один раз, а вот дни переноса праздничных можно заполнять через внешний TXT файл в начале года так как все переносы проходят через официальные документы в начале года.

megaloman, спасибо за код.

Рабочий вариант выложу тут в теме, надеюсь найду время за выходные.

Отправлено: 07:28, 06-07-2018 | #7



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
MSFT SQL Server - агрегация id по дням kontox Программирование и базы данных 6 22-10-2017 18:50
Прочие - Ищу программу-будильник, работающий по дням. Dark_Timur Программное обеспечение Windows 2 11-08-2014 08:56
[решено] как сделать доступ к папкам по дням недели? Steven21 Microsoft Windows NT/2000/2003 15 10-12-2009 17:11
выгрузка по рабочим станциям euro8 Microsoft Windows NT/2000/2003 1 07-12-2009 12:14
CMD/BAT - Батник имеющий лимит запусков по дням??? Anarasius Скриптовые языки администрирования Windows 3 24-09-2009 16:07




 
Переход