Привет всем, я пытаюсь установить новую задачу в планировщике задач в 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






Я собираюсь сделать безумное предположение и скажу, что это должно выглядеть так:
action.Id = action_id
Обратите внимание, что все остальные поля имеют верблюжий регистр.
Похоже, что IAction имеет метод put_Id, и я предполагаю, что оболочка Python сохраняет регистр полей, которые она предоставляет как атрибуты.
Итак, когда я искал способ запустить exe при загрузке, я нашел два кода, которые выглядят так, как то, что мне нужно, здесь <stackoverflow.com/questions/51172706/…> и один здесь <dzone.com/articles/create-and-run-scheduled-task>, поскольку я тестировал их оба, они работали нормально, но когда я изменил их, чтобы начать при загрузке, я продолжаю получать такие ошибки, как показано выше
Привет, да, вы исправили одну ошибку, но проблема все еще существует. Я получаю файл «C: / Users / PTV4CLJ / Desktop / Python scripturi / test search / task.py», строка 87, в <module> action.Path = action_path