bat文件在Windows调度程序中没有运行python脚本



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

我已经设法创建了一个bat文件来运行R代码在windows调度程序和工作。

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

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

当前bat文件如下:

@echo off​
SET log_file=C:pythonlogfile.txt
echo on
call :logit >>log_file=%
exit /b 0 ​ 
:logit
call C:ProgramDataAnaconda3Scriptsactivate.bat
cd C:python
python Updateppt.py 

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

  • 在bat文件中添加日志文件。日志文件被创建并添加了三个步骤,这样我就知道bat文件已经运行了。日志文件返回如下内容:
C:python>call C:ProgramDataAnaconda3Scriptsactivate.bat 
(base) C:python>cd C:python 
(base) C:python>python Updateppt.py  
  • 根据堆栈溢出的建议将bat文件编辑为各种组合。它们中的大多数都在命令提示符中工作,但没有一个在windows调度程序
  • 中工作。
  • 检查我保存信息的文件夹的安全设置,我有完全访问权限
  • 确保将文件夹添加到环境变量的system和user部分的PYTHONPATH中
  • 有一个R文件,当前通过windows调度程序的bat文件运行,所以要确保所有的一般,条件和设置部分在属性匹配
  • 在所有包上重新运行pip install,以确保在运行py文件时它们是可访问的,并且位于正确的位置。这是基于以下建议:无法调度python脚本通过Windows任务调度程序
  • 运行
  • 计时命令提示符和windows调度程序任务,命令提示符需要30秒,而windows调度程序需要20秒
  • 在python文件中添加了日志记录,当脚本启动时,它会记录日志,当在windows调度程序中运行时,它会记录时间,所以它正在运行python脚本

我能做些什么使它工作吗?我真的很茫然,我似乎找不到一个堆栈溢出响应,实际解决了我的问题

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

中不会这样做。windows调度程序运行日志

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')

最新更新