2016-02-18 59 views
0

我有一个非常简单的python脚本(用于发送电子邮件),当我在cmd窗口或python中运行它时完美工作,或者如果我直接启动一个.bat指向它的文件。Windows任务调度程序没有运行python脚本/批处理文件

但是,当我尝试让任务调度程序运行它时,没有任何反应。任务计划程序说它运行并成功完成,日志文件为空,但没有发送电子邮件。

我知道还有很多其他问题与这个问题有关,我已经通读了他们并尝试了解决方案,但似乎没有任何工作。我是python的新手(以及调度任务!),所以我可能会错误地实现解决方案。

这里是我试过......

  • 以各种方式创建的脚本批处理文件在里面:

    python C:\Users\me\Documents\etc\script.py >C:\Users\me\Documents\etc\log.txt 
    
    python "C:\Users\me\Documents\etc\script.py >C:\Users\me\Documents\etc\log.txt" 
    
    C:\Users\me\AppData\Local\Programs\Python\Python35-32\python.exe C:\Users\me\Documents\etc\script.py 
    
    "C:\Users\me\AppData\Local\Programs\Python\Python35-32\python.exe" "C:\Users\me\Documents\etc\script.py" 
    
    C:\Users\me\Documents\etc\script.py 
    

所有这些正常工作时双击文件 - 但没有在任务管理器中运行。 (虽然他们说他们已经成功完成)。在任务管理器中,我只是将链接放在“程序/脚本”框中的.bat文件中。

  • 做上述但与完整路径的程序/脚本的CMD.EXE,和.bat文件作为参数。我也尝试将“bat”文件的位置放在“Start(可选)”中:“

  • 尝试通过任务计划程序直接运行.py文件,并将其放入”Program/script:“盒子

  • 试图通过任务计划程序直接运行.py文件,在“程序/脚本”中放入python.exe的完整路径(参见上文),并在“添加参数”中输入sript.py ”。我也试过这个路径,在“开始”脚本的位置。

  • 尝试通过cmd运行.py文件 - 因此将“程序/脚本”和“参数”中的script.py文件(完整路径)中的cmd.exe的完整路径。

一些我试图运行script.py的人直接在Task Scheduler中直接说“running”,但我没有记下这些是什么。

我正在运行Windows 7(64位),并得到了Python 3.5.1(32位)。我有本地管理员权限。

我创建的其他计划任务(不涉及python脚本)可以正常工作,但是这让我很难过。请帮忙!

+0

您不应该需要cmd.exe或批处理文件才能在任务计划程序中运行Python脚本。直接运行python.exe,我知道你已经尝试过了,所以这个问题与你的脚本有关。首先尝试写入文件的简单测试脚本。 – eryksun

+2

您的脚本是否具有任何GUI元素或执行(直接或间接通过COM)任何具有GUI的程序(例如Outlook)?如果是这样,你需要确保它只在用户登录时运行。 – eryksun

+0

我的脚本确实使用outlook - 我将设置更改为“仅在用户登录时”,但没有喜悦。 taskeng.exe打开,但没有任何反应,任务调度程序表示它正在运行。 – ratherstrange

回答

1

只是添加一个答案,如果这会影响其他新手:)。我需要检查“仅在用户登录时运行”,并且还需要取消选中“以最高权限运行”。

我猜这是因为eryksun说Outlook有一个GUI。

0

别的东西尝试:

确保在批处理文件中要添加一个命令以更改目录到您的可执行的生活。

@echo off 
echo.------------------------------------------------ 
echo.Windows Task invoked on %date%, %time% (local time) 
echo.------------------------------------------------ 

SET My_exe_dir="C:\Program Files (x86)\MyProgram\FolderWhereExeLives" 

SET Input_dir="C:\Program Files (x86)\MyInputFolder" 

cd %My_exe_dir% <-- This was the key for me. 

%My_exe_dir%\myprogram.exe %Input_dir%\MyInputFile.xml -1 
相关问题