2015-05-26 87 views
2

我是SO的新手。我有权创建一个Windows任务计划,以使用我们的Python API运行.BAT文件,将其推送到我们的远程PC机队。通过Python运行Windows任务计划程序

我在将参数传递给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的完整路径。

相关问题