【发布时间】:2015-08-08 06:32:54
【问题描述】:
我是新来的。我的任务是创建一个 Windows 任务计划来运行一个 .BAT 文件,使用我们的 Python API 将其推送到我们的远程 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 运行它。 -
谢谢,我确实通过执行以下操作弄清楚了: - 使用 shlex.split() 解析代码,结果是这样的 - '/delete', '/tn' , 'update_auto_beta', '/f' - 删除 schtasks 谢谢
-
如果
shlex.split有效,命令行必须已经正确引用。在 Windows 上,Popen必须将列表重建为CreateProcess的字符串,因此只需将命令作为字符串传递。
标签: python windows scheduled-tasks