DOS命令返回值通过%errorlevel%获取,用于批处理中判断命令执行成功或失败,实现自动化流程控制及错误处理逻辑。
DOS命令返回值的本质
DOS命令执行后会产生一个退出代码(Exit Code),通常称为 %errorlevel%:
0表示成功(Success)。- 非`0“值(如
1,2,3等)表示失败或特定错误(具体含义因命令而异)。
获取返回值的3种方法
直接读取 %errorlevel%
在批处理脚本中,通过 %errorlevel% 变量获取上一条命令的返回值:
dir C:\ExistingFolder
if %errorlevel% equ 0 (
echo 命令执行成功!
) else (
echo 命令失败!错误代码:%errorlevel%
)
使用 && 和 运算符
&&:当上一条命令成功(返回0)时执行后续命令。- :当上一条命令失败(返回非
0)时执行后续命令。ping www.baidu.com && echo 网络连通 || echo 网络断开
捕获命令输出内容
若需获取命令输出的文本(而非退出代码),可通过重定向或for循环:
:: 重定向输出到文件
dir C:\ > output.txt 2>&1
:: 使用for循环逐行处理输出
for /f "delims=" %%i in ('ipconfig') do (
echo 当前行内容:%%i
)
关键注意事项
-
立即读取原则:
%errorlevel%的值会随命令执行实时更新,建议在命令后立即读取。some_command.exe set exit_code=%errorlevel% echo 返回值:%exit_code%
-
命令兼容性:
部分命令(如echo,set)不会修改%errorlevel%,而系统工具(ping,dir,xcopy)会返回明确状态码。ping成功返回0,失败返回1。xcopy成功返回0,文件冲突返回4,内存不足返回8。
-
错误代码含义:
非0值需查阅命令文档。net user命令:2=访问被拒绝,5=参数错误。- 使用
net helpmsg 错误码查看系统错误说明。
完整批处理脚本示例
@echo off
:: 示例:检查文件是否存在并复制
if not exist "C:\source.txt" (
echo 源文件不存在!错误码:2
exit /b 2
)
xcopy C:\source.txt D:\backup\ /y
if %errorlevel% neq 0 (
echo 复制失败!错误码:%errorlevel%
exit /b %errorlevel%
)
echo 操作成功完成!
exit /b 0
为什么需要获取返回值?
- 自动化脚本:根据命令结果决定后续操作(如备份成功则发邮件通知)。
- 错误处理:精准定位故障原因(权限不足/路径错误等)。
- 系统监控:在计划任务中记录执行状态日志。
引用说明: 参考微软官方文档《Windows Command-Line Reference》,并结合常见批处理开发实践整理,具体命令的退出代码含义请查阅相关命令的官方说明。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6255.html