批处理(.bat)执行多个Python脚本仅首个运行的错误处理问题求助
批处理文件问题排查与修复方案
核心问题原因
- 所有跳转标签都使用了相同的
:Next命名:Windows批处理中,同名标签只会匹配整个脚本里第一次出现的:Next位置,导致执行完第一个Python文件后跳转逻辑完全混乱,无法按顺序执行后续脚本。 - 重复写多份错误处理逻辑不仅冗余,也大幅提升了代码出错概率。
修复后的脚本代码
@echo off :: 预定义通用路径变量,避免重复编写 set "WORK_DIR=C:\EarthSQL-Testing" set "LOG_DIR=C:\Users\EarthSQL\EarthSQL\Documents - Documents\ErrorLog" :: 按顺序执行Python脚本,异常直接跳转到统一错误处理 python "%WORK_DIR%\mckayplod.py" "%WORK_DIR%" if %ERRORLEVEL% NEQ 0 goto HandleError python "%WORK_DIR%\mckaypersonnel.py" "%WORK_DIR%" if %ERRORLEVEL% NEQ 0 goto HandleError python "%WORK_DIR%\mckaydrilling.py" "%WORK_DIR%" if %ERRORLEVEL% NEQ 0 goto HandleError python "%WORK_DIR%\mckactivities.py" "%WORK_DIR%" if %ERRORLEVEL% NEQ 0 goto HandleError :: 全部执行成功的收尾逻辑 echo 所有Python脚本执行完毕,无异常 pause exit /b 0 :: 统一错误处理逻辑 :HandleError echo PYTHON ERROR HAS FOUND > "%WORK_DIR%\Error.txt" copy "%WORK_DIR%\Error.txt" "%LOG_DIR%\" /y pause exit /b %ERRORLEVEL%
额外注意事项
- 确保你的Python脚本出现异常时会返回非0退出码:在Python代码中捕获异常后调用
import sys; sys.exit(1)即可,脚本无异常运行完成默认返回0,符合判断逻辑。 - 如果设备上安装了多个Python版本,建议将
python替换为Python解释器的完整绝对路径,避免环境变量匹配错误。
内容的提问来源于stack exchange,提问作者xyz
相关产品推荐
相关产品推荐

