Планировщик заданий Windows — запуск каждую минуту
Частенько спрашивают как в Windows сделать запуск файла \ программы каждую минуту или пять минут, или вообще какого либо времени. Разберем это на примере bat файла.
Для начала переходим в планировщик заданий, который можно найти на панели управления и создаем новое простое задание:
Как-нибудь называем, чтобы потом было не сложно найти задание если что, я назвал sentinel:
Жмем «далее», пока не дойдем до выбора файла для нашего задания:
Выбираем наш bat файл и жмем далее. Ставим галку на «Открыть окно «Свойства» для этой … «:
В открывшемся окне переходим на вкладку Триггеры:
И изменяем наше задание (двойной клик либо выделить и нажать изменить):
Ставим галку на «Однократно», «Повторить задание каждые» и вписываем каждые сколько минут или часов. Я написал чтобы файл выполнялся каждую минуту, в выпадающем списке нет одной минуты, поэтому цифру один наберите на клавиатуре. Жмем «ОК» и радуемся жизни. Теперь наш скрипт или что Вы там хотели выполняется каждую минуту.
Если нужно остановить выполнение, то необходимо найти наш процесс (я его назвал sentinel) во всех заданиях и остановить либо удалить.
Блог IT для Windows
Все про Windows, программное обеспечение, информационную безопасность, программирование
Добавляем задание в Планировщик заданий
Рассмотрим добавление задания в Планировщик заданий, для автоматического
копирования данных. Скрипт, написанный в bat-файле для копирования данных.)
1. Необходимо запустить планировщик заданий:
Пуск — Панель Управления — Администрирование — Планировщик заданий.
Сочетания клавиш win + R (выполнить) и в появившемся окне ввести taskschd.msc
2. В Планировщике заданий необходимо выбрать пункт меню «Действие» и
в появившемся меню пункт «Создать задачу«.
3. Далее необходимо ввести «Имя задачи«, в данном случае «Бэкпап«,
но можно указать и другое имя.
4. Далее необходимо перейти на вкладку «Триггеры» и нажать кнопку «Создать«.
5. На следующем шаге необходимо настроить расписание запуска задания (в данном случае задание будет запускаться по рабочим дням в 18-00).
Можно задать другое расписание, например «При входе в систему«.
6. На заключительном этапе необходимо указать действие нашего задания, для этого необходимо перейти на вкладку «Действия» и нажать кнопку «Создать«.
В данном примере действием будет запуск файла backup.bat с локального диска Е.
Итак, задание в Планировщике заданий назначено.
Вы нашли на данном сайте нужную информацию и она Вам помогла.
Вы можете помочь данному сайту, кинув в копилку несколько рублей.
Использование bat файлов для создания «Заданий по расписанию»
Продолжаю тему создания нетривиальных bat-файлов для тривиальных задач, начатую здесь.
Наверняка многие сталкивались с задачей, когда для каких-либо целей в ОС Windows необходимо создать задание, выполняемое по расписанию (scheduled task).
Для этих целей имеется простой графический интерфейс. Однако как поступить, если задание должно создаваться автоматически?
Попробуем решить эту задачу с использованием примитивного bat-скрипта, который будет выполняться в практически любой версии Windows.
Для удобства, создадим на машине локального технологического пользователя, под которым будет работать наше задание по расписанию. Это удобно тем, что для пользователя можно задать права, которые необходимы только для выполнения определенных действий.
:: Имя локального пользователя, под которым будем работать
set user_name =test_user
:: Пароль для локального пользователя
set user_passw =test_passw
А как известно пользователь должен находиться в группе с определенными правами. Вот тут и возникает определенная сложность, т.к. если в скрипте четко задать имя группы, то могут возникнуть проблемы на машине с другой локализацией, например китайской. И как будет называться на китайском группа «Пользователи» узнать будет не очень просто. К счастью, в ОС Windows группы привязаны к так называемому Group SID. Зная, к примеру, Group SID группы «Администраторы», мы можем использовать его в скрипте. Например, S-1-5-32-545 — это локальные пользователи, а S-1-5-32-544 — администраторы.
Теперь нужно определить имя для заданного Group SID, используемого в данной локализации. Тут нам на помощь придет WMIC (WMI command-line).
:: S- 1 — 5 — 32 — 545 — локальные пользователи
Set GroupSID =S- 1 — 5 — 32 — 545
Set GroupName =
For / F «UseBackQ Tokens=1* Delims==» %% I In ( ` WMIC Group Where «SID = ‘%GroupSID%'» Get Name / Value ^ | Find «=» ` ) Do Set GroupName = %% J
Set GroupName = % GroupName:
Нужно знать еще один нюанс. При создании пользователя, в зависимости от системных настроек, задается время истечения пароля. И если пароль нужно будет поменять, то задание по расписанию не будет выполняться. Для этого нам нужно создать пользователя, у которого никогда не истекает пароль. Задать это в стандартной команде net user нельзя (expires:never — задает, что пользователь не может поменять пароль), поэтому опять прибегнем к помощи WMIC:
:: Создание пользователя
net user % user_name % % user_passw % / add / comment: «User for works with application» / expires:never / fullname: % user_name % / passwordchg:no
:: Устанавливаем, чтобы пароль не истекал никогда
:: Либо так — wmic path Win32_UserAccount where Name = ‘%user_name%’ set PasswordExpires = false
wmic USERACCOUNT where Name = ‘%user_name%’ set PasswordExpires = false
:: Добавление локального пользователя в заданную локальную группу
net localgroup % GroupName % % user_name % / ADD
Обратите внимание, что если вы удаляете пользователя командой net user test_user /DELETE, то вам нужно будет вручную удалить его каталог по пути %USERS%\test_user\ либо предусмотреть его удаление в скрипте.
Ну а далее создаем само задание, выполняемое по расписанию:
:: Имя запланированного задания, под которым будет работать приложение
set task_name =Test_task_bat
:: Путь к приложению
set my_app_path = «d:test.bat»
:: Интервал работы приложения во временном задании
:: Valid schedule types: MINUTE, HOURLY, DAILY, WEEKLY, MONTHLY, ONCE, ONSTART, ONLOGON, ONIDLE.
:: ЕЖЕМИНУТНО, ЕЖЕЧАСНО, ЕЖЕДНЕВНО, ЕЖЕНЕДЕЛЬНО, ЕЖЕМЕСЯЧНО ПРИ ЗАПУСКЕ ВХОДЕ В СИСТЕМУ ПРИ ПРОСТОЕ
set schtasks_time =MINUTE
:: Начальное время старта приложения во временном задании
set schtasks_start =08:00:00
:: Создание запланированного задания
schtasks / create / tn «%task_name%» / tr % my_app_path % / sc % schtasks_time % / st % schtasks_start % / ru % user_name % / rp % user_passw %
Вот и все. Надеюсь, что мой небольшой мануал окажется полезен и вы сэкономите свое время при выполнении данной задачи.
Настройка регламентных заданий с использованием bat-файлов или vbs-скриптов через механизм Task Scheduler Windows
Навеяно собственным опытом настройки регламентного задания в типовую УТ без добавления в конфигурацию и обещанием себе в процессе внедрения собрать и систематизировать все материалы, которые были найдены в различных источниках.
Автоматические регламентные задания для конфигураций приложения настраиваются с помощью бат-файлов (файлы с расширением .bat) или скриптами через стандартный механизм Windows (Выполнение задания по расписанию или Task Scheduler), при этом в качестве параметров можно передать неограниченное количество параметров для инициализации нужных процедур.
Процесс настройки разделяется на четыре этапа:
- Написание самой обработки для запуска;
- Выбор способа исполнения регламентного задания;
- Настройки параметров пользователя 1С для запуска;
- Настройка регламентного задания в Task Scheduler Windows.
По первому пункту, видимо тут для каждого будет своя обработка, так, собственно, пример своей обработки я прикреплю к статье. Постарался написать универсальный код, который способен выполнить последовательно несколько процедур.
Далее следует выбор, как запускать данную обработку.
Ниже я привожу различные вариации как bat — файлов, так и vbs — скриптов.
Каждый из вариантов имеет свои плюсы, так и минусы. Например, использование первого варианта предполагает полный запуск 1С с интерфейсом.
bat_file.bat
«ПУТЬ_К_ТЕКУЩЕЙ_ВЕРСИИ_1С\bin\1cv8.exe» ENTERPRISE /F «ПУТЬ_К_БАЗЕ «/N «ИМЯ_ПОЛЬЗОВАТЕЛЯ_1С» /P «ПАРОЛЬ» /DisableStartupMessages /Execute»ПУТЬ_К_ОБРАБОТКЕ\САМА_ОБРАБОТКА.epf» /C»ПАРАМЕТР1, ПАРАМЕТР2″
bat_serv.bat
«ПУТЬ_К_ТЕКУЩЕЙ_ВЕРСИИ_1С\bin\1cv8.exe» ENTERPRISE /S «ИМЯ_СЕРВЕРА\ИМЯ_БАЗЫ «/N «ИМЯ_ПОЛЬЗОВАТЕЛЯ_1С» /P «ПАРОЛЬ» /DisableStartupMessages /Execute»ПУТЬ_К_ОБРАБОТКЕ\САМА_ОБРАБОТКА.epf» /C»ПАРАМЕТР1, ПАРАМЕТР2″
Так, хочется отметить, что одна из трудностей, с которой я столкнулся, это то, что сначала не указал параметр /DisableStartupMessages, подавляющего сообщения о несоответствии сохраненной конфигурации и конфигурации базы данных. Из-за его отсутствия у меня стопорился процессы выполнения.
scr_file.vbs
Set t = CreateObject(«V83.Application»)
t.Connect(«File=»»ПУТЬ_К_БАЗЕ_1С»»;Usr=»»ИМЯ_ПОЛЬЗОВАТЕЛЯ»»;pwd=»»ПАРОЛЬ_ПОЛЬЗОВАТЕЛЯ»»»)
r = t.ExternalDataProcessors.Create(«ПУТЬ_К_ОБРАБОТКЕ\САМА_ОБРАБОТКА.epf», FALSE).ThisObject.Example(«»»»»»»ПАРАМЕТР1, ПАРАМЕТР2″»»»»»»)
If r = 1 Then
MsgBox(«Ok»)
End If
t.Exit(False)
set t = Nothing
scr_serv.vbs
Set t = CreateObject(«V83.Application»)
t.Connect(«Srvr=ИМЯ_СЕРВЕРА;Ref=ИМЯ_БАЗЫ;Usr=»»ИМЯ_ПОЛЬЗОВАТЕЛЯ»»;pwd=»»ПАРОЛЬ_ПОЛЬЗОВАТЕЛЯ»»»)
r = t.ExternalDataProcessors.Create(«ПУТЬ_К_ОБРАБОТКЕ\САМА_ОБРАБОТКА.epf», FALSE).ThisObject.Example(«»»»»»»ПАРАМЕТР1, ПАРАМЕТР2″»»»»»»)
If r = 1 Then
MsgBox(«Ok»)
End If
t.Exit(False)
set t = Nothing
Лично по своему опыту, мне понравился вариант с vbs — скриптами. Поскольку «V83.Application» по моим субъективным ощущениям работает быстрее, однако, я столкнулся с тем, что часть методов оказалась недоступной, поскольку в типовой УТ на модулях которые были задействованы при записи не стояло галочки «внешнее соединение», потому при записи документов, у меня возникали ошибки, связанные с необнаружением процедур. Потому для себя я решил, для аналитики и чтения он подходит прекрасно, а для записи, все-таки bat-файлы с полноценным запуском. Если тут я не прав, прошу меня поправить.
Информационное сообщение имеет смысл только на этапе отладки скрипта, при последующей настройке регламентного задания советую это сообщение убрать.
Далее немного о пользователях, от имени которых будет производиться запуск, ему нужны права на «Открытие внешних отчетов и обработок» и думаю, будет не лишним снять галку «Защита от опасных действий» для этого пользователя в конфигураторе.
На следующем этапе встаем на тропу админов.
Требуется добавить задание в Task Scheduler Windows.
В моем случае это был Win Server, хотя это совсем не принципиально, интерфейс планировщика задач одинаков и не менялся уже очень давно.
Очень важно, чтобы Была выбрана опция «Выполнять для всех пользователей» и была установлена галка «Выполнить с наивысшими правами».
1С все таки, хочешь быстро, устанавливай монопольный режим))
Переходим к настройке расписания, здесь я не испытал трудностей, тут все просто.
На следующем шаге выбираем, что делать, так в нашем случае это будет запуск программы, и когда мы через «Обзор» прикрепим подготовленный bat — файл, планировщик самостоятельно растянет программу и аргументы в нужные поля.
Все остальные реквизиты я оставил по умолчанию.
Нажимаем ОК, наблюдаем как задача добавилась в список и начала исполняться.
Все описанное в статье можно более детально изучить на скриптах, которые прикреплены к статье, а также подробнее изучить принцип передачи различного количества параметров для множественного запуска процедур внешней обработки.