繁体   English   中英

Windows 调度程序中的 bat 文件未运行 python 脚本

[英]bat file in Windows scheduler not running python script

我正在尝试运行 python 脚本来更新 ppt 演示文稿。 一年前,我也尝试过运行回归并更新 SQL 中的表,但都没有运行。 然后我放弃了,因为我无法解决它。

我设法创建了一个 bat 文件来在 windows 调度程序中运行 R 代码,并且可以正常工作。

我已经创建了 bat 文件并在命令提示符下对其进行了测试,py 文件运行并更新了 ppt 演示文稿。

当我在 windows 中运行这个 bat 文件时,调度程序不会更新 ppt。

目前bat文件如下:

@echo off​
SET log_file=C:\python\logfile.txt

echo on
call :logit >>log_file=%
exit /b 0 ​ 

:logit
call C:\ProgramData\Anaconda3\Scripts\activate.bat
cd C:\python\
python Updateppt.py 

这些是我到目前为止尝试过的事情:

  • 在 bat 文件中添加了一个日志文件。 日志文件已创建并添加了三个步骤,因此我知道 bat 文件已运行。 日志文件返回这个:
C:\python>call C:\ProgramData\Anaconda3\Scripts\activate.bat 

(base) C:\python>cd C:\python\ 

(base) C:\python>python Updateppt.py  
  • 根据堆栈溢出的建议将 bat 文件编辑为各种组合。 他们中的大多数都在命令提示符下工作,但在 windows 调度程序中没有工作
  • 检查我保存信息的文件夹的安全设置,我有完全访问权限
  • 确保将文件夹添加到环境变量的系统和用户部分的 PYTHONPATH
  • 有一个 R 文件,当前通过 windows 调度程序通过 bat 文件运行,因此请确保属性中的所有常规、条件和设置部分都与该文件匹配
  • 在所有包上重新运行 pip install 以确保在 py 文件运行时它们可以访问并且位于正确的位置。 这是基于以下建议: Cannot schedule a python script to run through Windows Task Scheduler
  • 为命令提示符和 windows 调度程序任务计时,命令提示符需要 30 秒,而 windows 调度程序需要 20 秒
  • 添加到 python 文件的日志记录,它在脚本启动时记录,并在 windows 调度程序中运行时记录时间,因此它正在运行 python 脚本

我能做些什么来让它工作吗? 我真的对此不知所措,我似乎无法找到实际解决我遇到的问题的堆栈溢出响应

更新

我在每个 function 运行之后和最后一个 function 之前添加了时间,日志文件显示当它在 windows 调度程序中运行时,它不会运行最后一个 function,而是循环回到第一个。 它不会在命令提示符下执行此操作

windows 调度程序运行日志 python

INFO:root:run script started at 2022-04-29 13:18:31.318567
INFO:root:loaded enc data at 2022-04-29 13:18:32.072627
INFO:root:create enc_id at 2022-04-29 13:18:32.075627
INFO:root:agg data at 2022-04-29 13:18:59.782707

INFO:root:run script started at 2022-04-29 13:19:22.904437
INFO:root:loaded enc data at 2022-04-29 13:19:23.225462
INFO:root:create enc_id at 2022-04-29 13:19:23.228464

python 的命令提示符日志

INFO:root:run script started at 2022-04-29 13:20:48.871881
INFO:root:loaded enc data at 2022-04-29 13:20:49.051893
INFO:root:create enc_id at 2022-04-29 13:20:49.054894
INFO:root:agg data at 2022-04-29 13:21:05.040096
INFO:root:run script stopped at 2022-04-29 13:21:05.436125

它应该聚合数据,然后导出到 ppt,脚本将停止并运行“run script stopped”行。 为什么它会在命令提示符下正确运行它而不是 windows 调度程序?

这是它没有运行的代码

def update_ppt(CHW_daily):
    
    daily_figures = Presentation(ResultPath+'Template/daily_figures_template.pptx')
    
    # CHW table
    slide_CHW = daily_figures.slides[0]
    table_CHW = [shape for shape in slide_CHW.shapes if shape.has_table]
    
    #Then we can update the values in each cell directly from the dataframe:
    for i in range(1,8):
        for j in range(0,6):
          table_CHW[0].table.cell(i,j).text = str(CHW_daily.iloc[i-1, j])
          table_CHW[0].table.cell(i,j).text_frame.paragraphs[0].font.size = Pt(14)
         
   daily_figures.save(ResultPath+'daily_figures.pptx')        
    
    return() 

问题是文件无法保存在网络驱动器中。 错误说找不到文件路径。 我使用这段代码解决了这个问题:

from pathlib import Path
ResultPath = Path(r'<network domain name>/Daily figures/')
ResultPath_str = str(ResultPath)
daily_figures = Presentation(ResultPath_str+'/'+Template/daily_figures_template.pptx')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM