|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Выгрузка по рабочим дням |
|
CMD/BAT - Выгрузка по рабочим дням
|
Новый участник Сообщения: 2 |
Добрый день.
Есть такая задача выгружать архив клиентов на FTP, 15 и 30 числа, но если эти дни приходятся на праздник или выходной то выгружаем ранее. Bat файл выгрузки мной уже написан, а вот не могу сообразить как написать проверку, помогите пожалуйста. Хочется автоматизировать эту задачу. Также хочется чтобы была проверка по файлу в котором указаны праздничные дни, и если праздники то выгрузить ранее. Также есть проблема с Февралем там 28 дней, то есть выгрузка 28 или ранее, если попадает выходной на 28. Пример: Сегодня 28 число, Пятница, 30 число попадает на Воскресение, но нужно выгрузить сегодня. Взял код из темы "CMD/BAT - [решено] Переменная Дня недели" все хорошо но не соображу какой алгоритм проверки сделать, подскажите кто чем может. |
|
Отправлено: 09:37, 29-06-2018 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать kddkda, С выходными - задача решаемая. (кстати - что такое "выходной" - только воскресенье?) Но насчёт праздников ... Не знаю, какие у Вас законы, но у нас частенько перед праздниками практикуется перенос рабочих дней, чтобы увеличить число нерабочих дней вподряд (тут уж понятие "выходные" может извращаться как угодно). У нас есть такой праздник -Пасха, а за ним и Радуница(у нас нерабочий день), который в каждом году приходится на свой день.
ИМХО, решение задачи - задать в батнике на год (или более) расписание дней, когда надо чего-то там делать, и ежедневно в планировщике заданий этот батник запускать. Либо изменить постановку задачи: 1 и 15 (или 14) число есть всегда. Логика 1 числа: если нет архива текущего месяца - сделать его. Логика 15 числа: если за текущий месяц нет архива за число >= 15, делаем его. Наверное, в этом случае на каждую выгрузку надо будет создать лог-файл с именем по дате выгрузки. Выбирайте, что Вас устроит, можно затем предлагать код командного файла. |
------- Последний раз редактировалось megaloman, 29-06-2018 в 11:03. Отправлено: 10:51, 29-06-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 260
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
|
|
Отправлено: 11:42, 29-06-2018 | #3 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата tiss42rus:
|
|
Отправлено: 13:21, 29-06-2018 | #4 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать Цитата megaloman:
Вариант проверки при таком раскладе будет, к примеру, таким: |
||
Отправлено: 16:18, 29-06-2018 | #5 |
Ветеран Сообщения: 2728
|
Профиль | Отправить 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 Если надо сделать выгрузку, можно её вставить в процедуру :UpLoad, сейчас там просто Echo Для получения текущей даты применил WMIC, чтобы не задумываться о выбранном формате даты в системе |
------- Отправлено: 18:08, 29-06-2018 | #6 |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать Доброе Утро.
Спасибо за ответы, извиняюсь что долго не отвечал. Мысль такая появилась, проверяем ТДата +1, если выходной (Суббота или Воскресенье) или праздник, то выгрузить сегодня. Так как все государственные праздники известны то их можно забить один раз, а вот дни переноса праздничных можно заполнять через внешний TXT файл в начале года так как все переносы проходят через официальные документы в начале года. megaloman, спасибо за код. Рабочий вариант выложу тут в теме, надеюсь найду время за выходные. |
Отправлено: 07:28, 06-07-2018 | #7 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|