Bat脚本 错误处理
errorlevel 与 %errorlevel%
每个命令执行后会返回一个整数值,通常 0 表示成功,非 0 表示失败。
@echo off
:: 执行一个可能失败的命令
copy source.txt dest.txt
:: 方法一:使用 %errorlevel% 判断(精确匹配)
if %errorlevel% equ 0 (
echo 复制成功
) else (
echo 复制失败,错误码:%errorlevel%
)
:: 方法二:使用 if errorlevel 判断(大于等于)
if errorlevel 1 (
echo 命令执行失败(错误码 >= 1)
)
区别:if errorlevel n 判断错误码 大于等于 n;if %errorlevel%==n 判断 等于 n。
常用错误处理模式
@echo off
setlocal enabledelayedexpansion
:: 执行备份
xcopy "C:\Source" "D:\Backup" /E /I /Q /Y
if !errorlevel! neq 0 (
echo [错误] 备份失败,错误码:!errorlevel!
echo 请检查源目录是否存在
pause
exit /b !errorlevel!
)
echo [成功] 备份完成
错误处理最佳实践
- 检查关键命令的返回值
- 记录错误日志:
command >> log.txt 2>&1 - 显示清晰的错误信息,便于排查
- 使用
exit /b 错误码向调用者返回状态