Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Python运行Windows任务调度器_Python_Windows_Scheduled Tasks - Fatal编程技术网

通过Python运行Windows任务调度器

通过Python运行Windows任务调度器,python,windows,scheduled-tasks,Python,Windows,Scheduled Tasks,我是新来的。我的任务是创建一个windows任务计划,使用我们的Python API运行一个.BAT文件,将其推送到我们的远程PC机队 我在将参数传递到schtask.exe时遇到问题 代码如下: import subprocess path = "c:\windows\System32\schtasks.exe" subprocess.Popen([path, "schtasks /create /SC ONLOGON /TN 'Update_Automation_Beta' /TR 'C:\

我是新来的。我的任务是创建一个windows任务计划,使用我们的Python API运行一个.BAT文件,将其推送到我们的远程PC机队

我在将参数传递到
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)
注意:这个任务现在只是一个测试任务,而我正试图弄清楚它。 另外,如果直接在命令提示符窗口中键入,它将起作用,删除引号等。

这对我来说很有效:

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

外部使用单引号,内部使用双引号。如果需要,还可以输入schtasks的完整路径。

如果要使用列表,请将整个命令行拆分为单独的参数,但不要重复
schtasks
。不要使用
shell=True
,因为没有理由使用cmd.exe运行它。谢谢,我确实通过以下操作找到了答案:-使用shlex.split()解析代码,结果是-'/delete','/tn',update_auto_beta',“/f”-删除schtasks谢谢如果
shlex.split
有效,则必须正确引用命令行。在Windows上,Popen必须将列表重建为
CreateProcess
的字符串,因此只需将命令作为字符串传递即可。