批处理脚本需求:顺序执行Bat文件+生成追加式独立日志
批处理脚本批量执行解决方案
需求1:单BAT文件执行扩展至6个的顺序脚本
针对需要通过单个BAT文件执行1st.bat到6th.bat的需求,直接编写主脚本按顺序调用即可,基础示例:
@echo off REM 依次调用6个脚本 call 1st.bat call 2nd.bat call 3rd.bat call 4th.bat call 5th.bat call 6th.bat echo 所有脚本执行完成 pause
如果需要前一个脚本执行失败则终止流程,可增加错误判断逻辑:
@echo off setlocal enabledelayedexpansion REM 定义待执行的脚本列表 set "scripts=1st.bat 2nd.bat 3rd.bat 4th.bat 5th.bat 6th.bat" for %%s in (%scripts%) do ( echo 正在执行 %%s... call "%%s" if !errorlevel! neq 0 ( echo 错误:%%s 执行失败,终止后续流程 exit /b !errorlevel! ) ) echo 所有脚本执行完成 pause
需求2:指定路径下5个脚本顺序执行(带日志&错误校验)
针对指定路径(示例:D:\ESOFTWARE\PRODBatch)下的5个独立脚本,要求仅当前一个返回0时才执行下一个,且每个脚本生成独立追加式日志,可使用以下主脚本:
@echo off setlocal enabledelayedexpansion REM 脚本存放的目标路径 set "script_dir=D:\ESOFTWARE\PRODBatch" REM 按执行顺序定义脚本列表 set "scripts=1st.bat 2nd.bat 3rd.bat 4th.bat 5th.bat" REM 切换到脚本所在目录 cd /d "%script_dir%" for %%s in (%scripts%) do ( set "log_file=%%~n_s_log.txt" echo 正在执行 %%s,日志追加至 !log_file!... REM 执行脚本并将输出(含错误)追加到日志 call "%%s" >> "!log_file!" 2>&1 if !errorlevel! neq 0 ( echo 错误:%%s 执行失败(错误码:!errorlevel!),终止后续执行 exit /b !errorlevel! ) ) echo 所有脚本执行成功 pause
关键细节说明
- 错误校验:通过
errorlevel变量判断前一个脚本的执行结果,非0则终止流程 - 日志处理:使用
>>实现日志追加写入,2>&1将错误输出同步写入日志文件 - 路径处理:
cd /d确保切换到脚本所在目录,避免因路径问题导致脚本调用失败
内容的提问来源于stack exchange,提问作者Subhanu Dash
相关产品推荐
相关产品推荐

