Windows任务计划通过批处理运行Python脚本时的路径反斜杠报错问题
问题根本原因
你的路径写法本身没有问题,报错本质是任务计划运行时的会话环境无法识别你手动映射的P盘网络驱动器:
Windows系统中,用户登录后手动映射的网络驱动器属于当前普通用户会话,当你勾选任务计划的「使用最高权限运行」时,任务会在单独的UAC提升权限会话中执行,默认不会加载普通会话里的网络驱动器映射,因此系统找不到P盘对应的实际路径,和路径中的斜杠写法无关。你在报错中看到的双反斜杠是Python打印路径时的转义显示,实际运行时会解析为正常的单反斜杠,不需要调整路径写法。
解决方案(按推荐优先级排序)
方案1:直接使用UNC路径替代盘符(最稳定)
直接跳过盘符映射,用网络共享的完整UNC路径写代码里的路径,无需依赖会话的盘符映射规则:
- 先确认P盘对应的实际网络共享路径:打开资源管理器,在P盘上右键「属性」,查看「位置」字段,格式一般为
\\文件服务器地址\共享文件夹名 - 替换代码中的路径写法即可,示例:
# 假设P盘对应的UNC路径是\\192.168.1.10\公共共享 writer = pd.ExcelWriter(r'\\192.168.1.10\公共共享\1MatData\Query Output\Hold Report.xlsx')
该方案无需修改批处理或任务计划配置,兼容性最好,适合需要跨设备/跨会话运行的脚本。
方案2:在批处理开头先映射网络驱动器
如果你的脚本里多处使用了P盘路径,不想逐一修改,可以在运行Python脚本前,先在批处理中给当前会话映射P盘:
修改你的.bat批处理文件,在开头添加net use命令:
SET logfile="C:\Reports\batch.log" @echo off @echo Starting Script at %date% %time% >> %logfile% :: 新增以下行,替换为你的P盘对应UNC路径 net use P: \\文件服务器地址\共享文件夹 /persistent:no call C:\Users\Me\Anaconda3\condabin\conda.bat activate C:\Users\Me\Anaconda3 C:\Users\Me\Anaconda3\python.exe C:\Users\Me\RUN_daily_notifications.py :: 运行结束后可选删除映射 net use P: /delete /y pause @echo finished at %date% %time% >> %logfile%
如果共享目录需要单独的账号密码访问,修改映射命令为:net use P: \\文件服务器地址\共享文件夹 你的密码 /user:你的域名\你的用户名 /persistent:no
方案3:调整任务计划配置(兼容性一般)
如果你确实不需要用到最高权限运行脚本,可以直接修改任务计划配置:
- 取消勾选「常规」选项卡下的「使用最高权限运行」
- 「操作」选项卡下的「起始于」字段填写你Python脚本所在的目录,比如
C:\Users\Me\,避免相对路径解析异常
调整后任务会使用你当前登录的普通会话运行,可以识别到你已经映射的P盘。
内容的提问来源于stack exchange,提问作者D.Wills
相关产品推荐
相关产品推荐

