Windows 调度程序中的 bat 文件不是 运行 python 脚本
bat file in Windows scheduler not running python script
我正在尝试 运行 python 脚本来更新 ppt 演示文稿。一年前我也尝试过 运行 回归并更新 SQL 中的 table,但也没有 运行。解决不了就放弃了
我已经成功地在 windows 调度程序中为 运行 R 代码创建了一个 bat 文件并且可以正常工作。
我已经创建了 bat 文件并在命令提示符下对其进行了测试,它是 py 文件 运行s 并更新了 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 文件是 运行。日志文件 returns 这个:
C:\python>call C:\ProgramData\Anaconda3\Scripts\activate.bat
(base) C:\python>cd C:\python\
(base) C:\python>python Updateppt.py
- 根据 stack overflow 的建议将 bat 文件编辑为各种组合。他们中的大多数人在命令提示符下工作,但 none 在 windows 调度程序
中工作
- 检查我保存信息的文件夹的安全设置,我有完全访问权限
- 确保将文件夹添加到环境变量的系统和用户部分的 PYTHONPATH
- 有一个 R 文件,目前 运行 通过 windows 调度程序通过 bat 文件发送,因此请确保属性中的所有常规、条件和设置部分都与该文件相匹配
- re-运行 在所有包上安装 pip 以确保它们在 py 文件 运行s 时可以访问并且位于正确的位置。这是基于以下建议:
- 为命令提示符和 windows 调度程序任务计时,命令提示符需要 30 秒,而 windows 调度程序需要 20 秒
- 添加登录到 python 文件,它在脚本启动时记录,它在 windows 调度程序中记录 运行ning 的时间,所以它是 运行ning python 脚本
我能做些什么来让它工作吗?我真的对此不知所措,我似乎无法找到实际解决我遇到的问题的堆栈溢出响应
更新
我在每个函数 运行 之后和最后一个函数之前添加了时间,日志文件显示当它在 windows 调度程序中为 运行 时,它不会运行 最后一个函数,而是循环回到第一个函数。它不会在命令提示符下执行此操作
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 调度程序?
这不是代码 运行ning
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')
我正在尝试 运行 python 脚本来更新 ppt 演示文稿。一年前我也尝试过 运行 回归并更新 SQL 中的 table,但也没有 运行。解决不了就放弃了
我已经成功地在 windows 调度程序中为 运行 R 代码创建了一个 bat 文件并且可以正常工作。
我已经创建了 bat 文件并在命令提示符下对其进行了测试,它是 py 文件 运行s 并更新了 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 文件是 运行。日志文件 returns 这个:
C:\python>call C:\ProgramData\Anaconda3\Scripts\activate.bat
(base) C:\python>cd C:\python\
(base) C:\python>python Updateppt.py
- 根据 stack overflow 的建议将 bat 文件编辑为各种组合。他们中的大多数人在命令提示符下工作,但 none 在 windows 调度程序 中工作
- 检查我保存信息的文件夹的安全设置,我有完全访问权限
- 确保将文件夹添加到环境变量的系统和用户部分的 PYTHONPATH
- 有一个 R 文件,目前 运行 通过 windows 调度程序通过 bat 文件发送,因此请确保属性中的所有常规、条件和设置部分都与该文件相匹配
- re-运行 在所有包上安装 pip 以确保它们在 py 文件 运行s 时可以访问并且位于正确的位置。这是基于以下建议:
- 为命令提示符和 windows 调度程序任务计时,命令提示符需要 30 秒,而 windows 调度程序需要 20 秒
- 添加登录到 python 文件,它在脚本启动时记录,它在 windows 调度程序中记录 运行ning 的时间,所以它是 运行ning python 脚本
我能做些什么来让它工作吗?我真的对此不知所措,我似乎无法找到实际解决我遇到的问题的堆栈溢出响应
更新
我在每个函数 运行 之后和最后一个函数之前添加了时间,日志文件显示当它在 windows 调度程序中为 运行 时,它不会运行 最后一个函数,而是循环回到第一个函数。它不会在命令提示符下执行此操作
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 调度程序?
这不是代码 运行ning
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')