Планировщик задач Python через win32com при запуске Windows

Привет всем, я пытаюсь установить новую задачу в планировщике задач в Windows 10 через файл python, и я нашел здесь, в stackoverflow и o dzone, как это сделать для ежедневного триггера или триггера входа в систему, но если я хочу изменить до триггера загрузки все просто не работает, я меняю номер триггера на 8 в соответствии с веб-сайтом Microsoft найдено здесь, но он дает мне и ошибку

Файл "C: / Users / PTV4CLJ / Desktop / Python scripturi / test search / task.py", строка 85, в action.ID = action_id Файл "C: \ Python27 \ lib \ site-packages \ win32com \ client__init __. Py", строка 481, в setattr поднять AttributeError ("объект '% s' не имеет атрибута '% s'"% (repr (self), attr)) AttributeError: '' объект не имеет атрибута 'ID'

Кто-нибудь может мне помочь? Я хочу, чтобы он работал от двух до двух часов.

вот код, который я использовал

 import win32com.client

computer_name = "" #leave all blank for current computer, current user

computer_username = ""

computer_userdomain = ""

computer_password = ""

action_id = "Test Task" #arbitrary action ID

action_path = r"c:\windows\system32\calc.exe" #executable path (could be python.exe)

action_arguments = r'' #arguments (could be something.py)

action_workdir = r"c:\windows\system32" #working directory for action executable

author = "Someone" #so that end users know who you are

description = "testing task" #so that end users can identify the task

task_id = "Test Task"

task_hidden = False #set this to True to hide the task in the interface

username = ""

password = ""

run_flags = "TASK_RUN_NO_FLAGS" #see dict below, use in combo with username/password

#define constants

TASK_TRIGGER_STARTUP = 8

TASK_CREATE = 2

TASK_CREATE_OR_UPDATE = 6

TASK_ACTION_EXEC = 0

IID_ITask = "{148BD524-A2AB-11CE-B11F-00AA00530503}"

RUNFLAGSENUM = {

    "TASK_RUN_NO_FLAGS"              : 0,

    "TASK_RUN_AS_SELF"               : 1,

    "TASK_RUN_IGNORE_CONSTRAINTS"    : 2,

    "TASK_RUN_USE_SESSION_ID"        : 4,

    "TASK_RUN_USER_SID"              : 8

}

#connect to the scheduler (Vista/Server 2008 and above only)

scheduler = win32com.client.Dispatch("Schedule.Service")

scheduler.Connect(computer_name or None, computer_username or None, computer_userdomain or None, computer_password or None)

rootFolder = scheduler.GetFolder("\\")

#(re)define the task

taskDef = scheduler.NewTask(0)

colTriggers = taskDef.Triggers

trigger = colTriggers.Create(TASK_TRIGGER_STARTUP)


trigger.StartBoundary = "2019-09-19T08:00:00"#never start
trigger.EndBoundary = "2019-09-20T08:00:00"

trigger.Enabled = False

colActions = taskDef.Actions

action = colActions.Create(TASK_ACTION_EXEC)

action.ID = action_id

action.Path = action_path

action.WorkingDirectory = action_workdir

action.Arguments = action_arguments

info = taskDef.RegistrationInfo

info.Author = author

info.Description = description

settings = taskDef.Settings

settings.Enabled = False

settings.Hidden = task_hidden

#register the task (create or update, just keep the task name the same)

result = rootFolder.RegisterTaskDefinition(task_id, taskDef, TASK_CREATE_OR_UPDATE, "", "", RUNFLAGSENUM[run_flags] ) #username, password

#run the task once

task = rootFolder.GetTask(task_id)

task.Enabled = True

runningTask = task.Run("")

task.Enabled = False
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
1 533
1

Ответы 1

Я собираюсь сделать безумное предположение и скажу, что это должно выглядеть так:

action.Id = action_id

Обратите внимание, что все остальные поля имеют верблюжий регистр.

Похоже, что IAction имеет метод put_Id, и я предполагаю, что оболочка Python сохраняет регистр полей, которые она предоставляет как атрибуты.

Привет, да, вы исправили одну ошибку, но проблема все еще существует. Я получаю файл «C: / Users / PTV4CLJ / Desktop / Python scripturi / test search / task.py», строка 87, в <module> action.Path = action_path

Titus22 19.09.2018 14:23
IExecAction имеет put_Path, поэтому я не уверен, в чем проблема.
Jonathon Reinhart 19.09.2018 14:27

Итак, когда я искал способ запустить exe при загрузке, я нашел два кода, которые выглядят так, как то, что мне нужно, здесь <stackoverflow.com/questions/51172706/…> и один здесь <dzone.com/articles/create-and-run-scheduled-task>, поскольку я тестировал их оба, они работали нормально, но когда я изменил их, чтобы начать при загрузке, я продолжаю получать такие ошибки, как показано выше

Titus22 19.09.2018 14:34

Другие вопросы по теме