使用Windows任务计划程序调度Python脚本失败问题排查
问题描述
环境概述
- 域环境下的Windows 10专业版系统
- 所有脚本及文件存储于网络驱动器映射的文件夹(非本地)
- 两个Python脚本:一个用于筛选Excel文件(删除列等操作),另一个读取Excel内容编辑HTML文件
脚本详情(脚本手动运行正常,路径引用大概率是问题根源)
筛选Excel的脚本路径引用:
读取Excel:
df = pd.read_excel('H:\python codes\excel\planner software\planning-update.xls')
写入筛选后的Excel:
df.to_excel('H:\python codes\excel\planner software\planning-update-filtered.xlsx', index=False)
调用生成/编辑HTML的脚本:
subprocess.call(["python", "H:\python codes\excel\planner software\make-website.py"])
编辑HTML的脚本:
读取Excel路径同上,打开HTML的代码:
open("H:\python codes\excel\planner software\calendar.html", "w") as f:
需求目标
每日定时自动运行第一个脚本,要求无论用户是否登录,通过Windows任务计划程序实现
已尝试操作
在任务计划程序中创建任务,勾选「不管用户是否登录都要运行」;操作选择「启动程序」,程序/脚本路径填\storage\Users\lambra\python codes\excel\planner software\planner.py,起始于填\storage\Users\lambra\python codes\excel\planner software
参考相关教程操作,也尝试过使用驱动器盘符。部分设置下任务计划程序报错无法运行,当前设置下任务显示已执行(事件ID100、200、110),但HTML文件未更新。已设置文件完全权限,手动运行脚本或通过批处理运行均正常,仅调度执行无效。
解决方法
- 替换映射盘符为UNC路径
任务计划在用户未登录时无法识别映射的驱动器盘符(如H:\),所有脚本中的路径必须换成UNC格式,比如\\storage\Users\lambra\python codes\excel\planner software\planning-update.xls。Python代码中要注意转义反斜杠,要么写成双反斜杠:
df = pd.read_excel('\\\\storage\\Users\\lambra\\python codes\\excel\\planner software\\planning-update.xls')
要么用原始字符串:
df = pd.read_excel(r'\\storage\Users\lambra\python codes\excel\planner software\planning-update.xls')
- 任务计划程序的路径设置
- 程序/脚本直接填Python的完整安装路径(比如
C:\Python39\python.exe),把脚本的UNC路径填入「添加参数(可选)」栏:"\\storage\Users\lambra\python codes\excel\planner software\planner.py" - 「起始于」栏填脚本所在的UNC路径:
\\storage\Users\lambra\python codes\excel\planner software
- 权限与账户设置
- 任务的安全选项里,选择拥有网络文件夹完全权限的域账户,勾选「使用最高权限运行」
- 确保该账户能正常访问目标网络共享,可先用该账户登录系统手动运行脚本验证权限
- 检查subprocess调用路径
修改调用第二个脚本的代码,同样使用UNC路径:
subprocess.call(["python", r'\\storage\Users\lambra\python codes\excel\planner software\make-website.py'])
内容的提问来源于stack exchange,提问作者Onovar
相关产品推荐
相关产品推荐

