2015-05-26 118 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的完整路徑。

相關問題