Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows任务计划程序未运行python脚本/批处理文件_Python_Windows_Batch File_Scheduled Tasks_Taskscheduler - Fatal编程技术网

Windows任务计划程序未运行python脚本/批处理文件

Windows任务计划程序未运行python脚本/批处理文件,python,windows,batch-file,scheduled-tasks,taskscheduler,Python,Windows,Batch File,Scheduled Tasks,Taskscheduler,我有一个非常简单的python脚本(用来发送电子邮件),当我在cmd窗口中运行它时,或者在python中运行它,或者如果我直接启动指向它的a.bat文件,它就可以完美地工作 但是,当我试图让任务调度器运行它时,什么都没有发生。任务计划程序表示它已成功运行并完成,日志文件为空,但未发送电子邮件 我知道还有很多其他问题与这个问题有关,我已经通读了它们并尝试了解决方案,但似乎没有任何效果。我不熟悉python(也不熟悉调度任务!),所以我可能没有正确地实现解决方案 这是我试过的 以各种方式创建包含脚

我有一个非常简单的python脚本(用来发送电子邮件),当我在cmd窗口中运行它时,或者在python中运行它,或者如果我直接启动指向它的a.bat文件,它就可以完美地工作

但是,当我试图让任务调度器运行它时,什么都没有发生。任务计划程序表示它已成功运行并完成,日志文件为空,但未发送电子邮件

我知道还有很多其他问题与这个问题有关,我已经通读了它们并尝试了解决方案,但似乎没有任何效果。我不熟悉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
    
当双击文件时,所有这些都可以正常工作,但没有一个可以在任务管理器中运行。(尽管他们说他们已经成功地完成了)。在TaskManager中,我只是将指向.bat文件的链接放在“程序/脚本”框中

  • 执行上述操作,但使用程序/脚本中cmd.exe的完整路径以及.bat文件作为参数。我还尝试将bat文件的位置放在“起始位置(可选):”

  • 试图通过任务调度器直接运行.py文件,将其放入“程序/脚本:”框中

  • 试图通过任务调度器直接运行.py文件,将python.exe(见上文)的完整路径放在“程序/脚本”中,将sript.py放在“添加参数”中。我还尝试了在“开始”中使用脚本位置的路径

  • 尝试通过cmd运行.py文件-因此将cmd.exe的完整路径放在“Program/script”中,将script.py文件(完整路径)放在“Arguments”中

我试图直接运行script.py的一些脚本只是在任务调度器中永远说“running”,但我没有记下它们是什么

我正在运行Windows7(64位),并且已经获得了Python 3.5.1(32位)。我有本地管理员权限


我创建的其他计划任务(不涉及python脚本)工作得很好,但这让我感到困惑。请帮忙

只需添加一个答案,以防影响到其他新手:)。我需要选中“仅在用户登录时运行”,还需要取消选中“以最高权限运行”


我猜这是因为正如埃里克森所说,Outlook有一个GUI。

只是添加了一个答案,以防影响到其他新手:)。我需要选中“仅在用户登录时运行”,还需要取消选中“以最高权限运行”

我猜这是因为正如埃里克森所说,Outlook有一个GUI。

还有其他东西可以尝试:

确保在批处理文件中添加一个命令,以将目录更改为可执行文件所在的目录

@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
@echo关闭
回声。--------------------------------------
echo.Windows任务在%date%,%time%(本地时间)调用
回声。--------------------------------------
设置My_exe_dir=“C:\Program Files(x86)\MyProgram\FolderWhereExeLives”
设置输入\u dir=“C:\Program Files(x86)\MyInputFolder”
cd%My_exe_dir%要尝试的其他内容:

确保在批处理文件中添加一个命令,以将目录更改为可执行文件所在的目录

@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
@echo关闭
回声。--------------------------------------
echo.Windows任务在%date%,%time%(本地时间)调用
回声。--------------------------------------
设置My_exe_dir=“C:\Program Files(x86)\MyProgram\FolderWhereExeLives”
设置输入\u dir=“C:\Program Files(x86)\MyInputFolder”
cd%My_exe_dir%为我指定“开始于”目录:

在计划任务的属性中定义目录中的开始。 启动Windows任务计划程序。 导航到该任务并双击它以打开该任务的属性。 选择tab Action并单击Edit按钮。 在中有Start(可选)。在此输入已执行批处理文件的路径。 单击“确定”按钮两次,将此重要修改保存到属性中。

对于我,指定“开始于”目录:

在计划任务的属性中定义目录中的开始。 启动Windows任务计划程序。 导航到该任务并双击它以打开该任务的属性。 选择tab Action并单击Edit按钮。 在中有Start(可选)。在此输入已执行批处理文件的路径。
在“确定”按钮上单击两次可将此重要修改保存到“属性”中。

在任务计划程序中运行Python脚本时不需要cmd.exe或批处理文件。直接运行python.exe,我知道您已经尝试过了,所以问题与您的脚本有关。首先尝试写入文件的简单测试脚本。您的脚本是否具有任何GUI元素或执行(直接或间接通过COM)任何具有GUI的程序(例如Outlook)?如果是这样,您需要确保它“仅在用户登录时”运行。我的脚本确实使用outlook-我将设置更改为“仅在用户登录时”但没有乐趣。taskeng.exe打开,但什么也没有发生,任务计划程序说它正在运行。我现在将尝试另一个脚本,看看是否有效。您可以在不使用脚本的情况下运行python.exe进行测试。如果选择以交互方式登录的用户,则手动运行任务时,该任务应在该用户会话的控制台窗口中打开。用户必须以交互方式登录才能创建任何窗口。非交互式任务在服务会话(0)中运行,该会话与交互式会话(1+)隔离。在任务计划程序中运行Python脚本不需要cmd.exe或批处理文件。直接运行python.exe,我知道您已经尝试过了,所以问题与您的脚本有关。首先尝试写入文件的简单测试脚本。您的脚本是否具有任何GUI元素或执行(直接或间接通过COM)任何具有GUI的程序(例如Outlook)?如果