通过Python运行Windows任务调度器
我是新来的。我的任务是创建一个windows任务计划,使用我们的Python API运行一个.BAT文件,将其推送到我们的远程PC机队 我在将参数传递到通过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:\
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
的字符串,因此只需将命令作为字符串传递即可。