在Windows 10中的任务计划程序上计划.py文件

时间:2017-06-23 17:45:54

标签: python

我已经尝试将.py文件转换为.exe文件。不幸的是,.exe文件存在问题;我相信这是因为我的代码相当复杂。 所以,我试图直接安排我的.py文件与任务计划程序,但每次我这样做,然后运行它看看是否有效,弹出一个窗口,并询问我如何打开程序?-.- < / p>

你们是否知道如何使用Task Scheduler成功安排我的.py文件?请帮助,谢谢

Windows 10 Python 3.5.2

9 个答案:

答案 0 :(得分:22)

创建exe应该是最好的方法。但是如果你想用任务调度程序运行它,你可以这样做:

  1. 启动窗口的任务计划程序
  2. 查找“操作”窗格(右侧),它具有“创建基本任务”操作。点击它。
  3. 这将打开一个向导,您可以在其中定义任务名称,触发器(运行时)和操作(要运行的程序)。 在“操作”选项卡中,您可以指定要运行的Python脚本的名称以及脚本的任何参数。
  4. 要确保您的Python脚本无论计划任务使用的登录帐户如何都会运行,并避免混淆在混合环境(64位或32位)中使用哪个版本的Python,建议您运行Python可执行文件,其Python文件名称作为可执行文件的参数。

    假设您要运行的脚本是E:\ My script.py。而不是直接运行脚本,指示任务计划程序以脚本作为参数运行python.exe。例如:

    C:\ Python27 \ ArcGIS10.2 \ python.exe&#34; E:\ My script.py&#34;

    python.exe的位置取决于您的安装。如果你不知道它在哪里,你可以发现它的位置;将以下代码复制并粘贴到新的Python脚本中,然后执行该脚本。该脚本将打印python.exe的位置以及有关Python环境的其他信息。

    import sys
    import platform
    import imp
    
    print("Python EXE     : " + sys.executable)
    print("Architecture   : " + platform.architecture()[0])
    print("Path to arcpy  : " + imp.find_module("arcpy")[1])
    
    raw_input("\n\nPress ENTER to quit")
    

    确定python.exe的位置后,这是在任务计划程序的“操作”面板中输入的内容: enter image description here

    如果脚本有其他参数(参数),请在脚本路径后提供。希望这会有所帮助。

答案 1 :(得分:7)

您应该在Action标签中进行设置:

  • 在程序中,python.exe的路径:例如"C:\Users\Me\AppData\Local\Programs\Python\Python36\python.exe"
  • 在参数中,文件的完整路径,包括扩展名:例如 "C:\Users\Me\Desktop\mypythonsrcipt.py"
  • 开始于:留空

如果这不起作用,请尝试:

  • 在程序中,python.exe的路径:例如"C:\Users\Me\AppData\Local\Programs\Python\Python36\python.exe"
  • 在参数中,您的文件名带有扩展名:例如 "mypythonsrcipt.py"
  • 在开始时,脚本的文件夹:例如"C:\Users\Me\Desktop\"

每次修改任务时,General标签中的用户帐户都会切换到中等强制级别。所以我必须重新打开这个用户并将用户帐户设置回我的用户名:(参见此question

enter image description here

如果仍然无法运行脚本,请进入事件日志Applications and Service Log/Microsoft/Windows/TaskScheduler/Operational(右键单击以启用它)并查找错误。

答案 2 :(得分:4)

我几乎为此失去了头发。由于执行上述操作,我总是得到0x1。一位经验丰富的Windows管理员告诉我:

创建一个批处理文件:

SET logfile="C:\Reports\batch.log"
@echo off
@echo Starting Script at %date% %time% >> %logfile%
"C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\python.exe" "C:\Users\sys_www\source\repos\hardware\ReportAssembler.py"
@echo finished at %date% %time% >> %logfile%

然后在任务配置的操作部分中提供批处理文件。还需要注意的是,执行脚本的用户实际上可以访问在python程序运行时编写的所有文件。

我尝试使用脚本作为参数,并在programm / script中使用python exe。首先,我出现错误“ Windows Scheduled Tasks not running”。 然后经过一些配置后,我得到了错误0x1,该错误告诉我什么都没有。

答案 3 :(得分:1)

您执行的脚本将是您的python目录中的exe ex)C:\ Python27 \ python.exe

&#34;参数&#34;将是你的脚本的路径 ex)C:\ Path \ To \ Script.py

所以想想这样:你不是在技术上执行你的脚本作为计划任务。您正在为您的计算机执行root python exe,并将脚本作为参数提供。

答案 4 :(得分:0)

这对我有用,您可以尝试使用“操作”窗格: The Action pane

请注意,py文件的路径在双引号中添加参数:$(Arg0)

在“常规”选项卡中选中“以最高特权运行”,最好在“设置”选项卡的下拉菜单中选择“并行运行新实例”。

毕竟,您可以在“触发器”选项卡中设置任务计划以检查更改的效果(请记住,在“常规”选项卡中选择“运行是否登录用户”)。

答案 5 :(得分:0)

由于某些原因,Windows任务计划程序会在环境中启动python.exe,但在导入模块语句中它们将失败。我不得不使用一种使用CMD.exe的解决方法,并传递命令以在给定文件夹中运行python脚本。

使用程序

CMD

然后选择选项卡:

/c python main.py

并在选项卡开始于:

中填写源位置
C:\Users\...

不确定是什么原因。先前描述的解决方案都不适用于我。

答案 6 :(得分:0)

这绝对对我有用。我正在使用Windows 10专业版,并且花了将近6个月的时间才能获得此解决方案。感谢上面的建议。

我遵循了这个建议,该建议立即并顺利进行。我所做的只是指示调度程序以我的脚本作为参数运行python.exe,正如下面这个同伴

所解释的那样

这是我做的假设您要运行的脚本是E:\ My script.py。而不是直接运行脚本,而是指示任务计划程序以脚本作为参数运行python.exe。例如:

C:\ Python27 \ ArcGIS10.2 \ python.exe

“ E:\ My script.py”

python.exe的位置取决于您的安装。如果您不知道它在哪里,则可以找到它的位置;将以下代码复制并粘贴到新的Python脚本中,然后执行该脚本。该脚本将打印python.exe的位置以及有关您的Python环境的其他信息。

答案 7 :(得分:0)

只要您的脚本不需要花费很多时间来完成,Biswaranjan Naik的答案就可以正常工作。

我在Windows任务计划程序中使用了一些不同的方法:

在“程序/脚本”文本框中,设置Python可执行文件的路径(在我的情况下位于virtualenv文件夹内)。

“添加参数” =仅是您的Python脚本的名称。

“开始于” = Python脚本的完整路径(无name.py)。

enter image description here

通过这种方式运行脚本,控制台保持打开状态并等待结束。

答案 8 :(得分:0)

带有批处理文件的调度程序对我有用,但除了上述特定 python.exe 的完整路径之外,您可能还需要/想要为所有其他 python 包启动 conda 环境。这一行可以添加到批处理文件中:

call C:\ProgramData\Anaconda3\condabin\conda.bat activate myenv

即注意,批处理文件中的 conda activate 语法略有不同。还需要先运行

conda init cmd.exe

设置windows命令终端以使用conda。

此外,如果设置为在远程机器上运行,请注意调度程序有一个命令行界面,因此您甚至不需要与远程机器的 RDP 会话,但可以单独在 ssh 会话中进行设置:

schtasks /create /SC ONCE /TN <taskname> /TR C:\full\pathto\scheduledtask.bat /ST <hh:mm>