2015-05-26 3 views
2

Я новичок в SO. Мне поручено создать расписание задач Windows для запуска .BAT-файла, используя наш Python API, чтобы подтолкнуть его к нашему парку удаленных ПК.Запуск планировщика задач Windows через Python

У меня возникли проблемы с передачей аргументов schtask.exe.

Вот код:

import subprocess 
path = "c:\windows\System32\schtasks.exe" 
subprocess.Popen([path, "schtasks /create /SC ONLOGON /TN 'Update_Automation_Beta' /TR 'C:\test\run_admin.bat'"], shell = True) 

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

+0

Если вы хотите использовать список, разделите всю командную строку на отдельные аргументы, но не повторяйте 'schtasks'. И не используйте 'shell = True', так как нет смысла запускать это с помощью cmd.exe. – eryksun

+0

Спасибо, я понял это, выполнив следующее: - разобрав код с помощью shlex.split(), который сделал это чем-то вроде этого: '/ delete', '/ tn', 'update_auto_beta', '/f ' - Извлечение schtasks спасибо –

+0

Командная строка должна быть правильно указана, если 'shlex.split' работает. В Windows 'Popen' необходимо перестроить список в строку для' CreateProcess', поэтому просто передайте команду в виде строки. – eryksun

ответ

0

Это работает для меня:

import subprocess 
subprocess.call('schtasks /create /SC ONLOGON /TN "Update_Automation_Beta" /TR "C:\test\run_admin.bat"') 

Используйте одинарные кавычки снаружи и двойные qoutes внутри. Также, если нужно, вы можете ввести полный путь к schtasks.

Смежные вопросы