2016-04-26 58 views
1

我试图按如下方式创建批处理文件。如何从父批处理中退出

@ECHO OFF 
:Main 
CALL :STEP_1 
CALL :STEP_2 

GOTO :EXIT 

:STEP_1 
REM some other logic here 
IF %ERRORLEVEL% NEQ 0 (
    GOTO :ERROR 
) 
GOTO :EOF 

:STEP_2 
REM step 2 logic 
GOTO :EOF 

:ERROR 
EXIT /b 1 

:EXIT 
EXIT /b 0 

什么我期待的是,错误处理:STEP_1将整批文件退出。但是,发生的情况是,它仅从我们使用CALL时创建的内容中退出。即使:STEP_1中存在错误,:STEP_2仍将被调用。

我的问题是,是否有可能完成我的要求?要退出整个批处理文件而不是:STEP_1上下文,将不会调用:STEP_2

回答

4

您可以使用以下(GOTO) 2>NUL与退出相结合,并且应该为您做这项工作。

:ERROR 
(goto) 2>nul & exit /b 1 

有关更多信息,请参阅this

+0

这真的很棒。谢谢! – lastr2d2