通过Python运行Windows任务计划程序

6

我是新来的SO用户。我被分配任务创建一个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)

注意:目前该任务仅为测试任务,我正在尝试解决它。同时,如果直接输入到命令提示符窗口中,它将起作用,不需要删除引号等。

如果您想使用列表,请将整个命令行拆分为单独的参数,但不要重复schtasks。而且不要使用shell=True,因为没有理由使用cmd.exe运行此命令。 - Eryk Sun
谢谢,我通过以下方式解决了这个问题:
  • 使用shlex.split()解析代码,使其变成像这样的形式 - '/delete','/tn','update_auto_beta','/f'
  • 删除schtasks
谢谢。
- KJ Jr
如果 shlex.split 能够正常工作,则命令行必须已经正确引用。在 Windows 上,Popen 必须将列表重建为一个字符串以供 CreateProcess 使用,因此只需将命令作为字符串传递即可。 - Eryk Sun
1个回答

2
这对我有用:

这对我有用:

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接