RD命令未返回预期0/1错误级别,受Robocopy影响,求准确退出码
RD命令(删除目录)的准确退出码说明
核心退出码规则
- 成功删除目标目录时,返回退出码 0
- 失败场景对应退出码:
- 1:指定的目录不存在
- 2:目标目录非空且未使用
/S参数(无法删除非空目录) - 5:权限不足,无删除目录的权限
- 16:命令语法错误(如参数输入错误)
解决你的脚本问题
批处理中%ERRORLEVEL%会保留上一条执行命令的退出码,你当前脚本中,RD执行后获取的是之前Robocopy的退出码,而非RD本身的。需要在RD命令执行后立即捕获它的退出码:
robocopy src target ... rem 执行RD命令并立即保存其退出码 rd /S /Q %Target% set "RD_EXIT_CODE=%ERRORLEVEL%" rem 根据RD的退出码判断分支 IF %RD_EXIT_CODE% EQU 0 goto :good IF %RD_EXIT_CODE% NEQ 0 goto :fail :good echo 目录删除成功 goto :end :fail echo 目录删除失败,退出码:%RD_EXIT_CODE% goto :end :end
内容的提问来源于stack exchange,提问作者Raj
相关产品推荐
相关产品推荐

