我在批处理脚本中使用
RD
命令删除目录。
我假设
RD
应该返回 0
成功,或者 1
失败。但它似乎没有这样做。
我在
Robocopy
命令之前使用 RD
命令实用程序,它取而代之的是 Errorlevel
中的 Robocopy
。
请告知确切的退出代码
RD
返回成功和失败。
robocopy src target ...
rd /S /Q %Target%
IF %ERRORLEVEL% EQU 0 goto :good
IF %ERRORLEVEL% NEQ 0 goto :fail
你的假设不正确。
@ECHO OFF
SETLOCAL
MD hit
RD hit
ECHO %errorlevel%
RD miss
ECHO %errorlevel%
GOTO :EOF
是的,
RD
命令有一种“有趣”的方式来返回错误代码。基本上,您只需要在 || REM
之后添加 RD
命令即可正确“设置” ERRORLEVEL 值:
robocopy src target ...
rd /S /Q %Target% || rem
IF %ERRORLEVEL% EQU 0 goto :good
IF %ERRORLEVEL% NEQ 0 goto :fail
这些是
RD
命令以这种方式返回的错误值:
1 = Bad switch given
2 = Directory not found
5 = Access denied
32 = Directory in use
145 = Directory not empty.
此行为在下面详细描述表 5 标题在this answer关于“由内部命令设置的错误级别值”