서브 루틴 안에서 배치 파일을 종료하려면 어떻게해야합니까?
EXIT 명령을 사용하면 서브 루틴을 호출 한 행으로 돌아가고 실행이 계속됩니다.
다음은 그 예입니다.
@echo off
ECHO Quitting...
CALL :QUIT
ECHO Still here!
GOTO END
:QUIT
EXIT /B 1
:END
EXIT /B 0
산출:
Quitting...
Still here!
최신 정보:
이것은 적절한 답이 아니지만 나는 다음과 같은 행을 따라 무엇인가를 끝내었다.
@echo off
CALL :SUBROUTINE_WITH_ERROR || GOTO HANDLE_FAIL
ECHO You shouldn't see this!
GOTO END
:SUBROUTINE_WITH_ERROR
ECHO Simulating failure...
EXIT /B 1
:HANDLE_FAIL
ECHO FAILURE!
EXIT /B 1
:END
ECHO NORMAL EXIT!
EXIT /B 0
이중 파이프 구문 :
CALL :SUBROUTINE_WITH_ERROR || GOTO HANDLE_FAIL
다음의 약식 :
CALL :SUBROUTINE_WITH_ERROR
IF ERRORLEVEL 1 GOTO HANDLE_FAIL
나는 여전히 CALLER가 상황을 처리하도록하지 않고 서브 루틴에서 직접 빠져 나갈 수있는 방법이 있는지 알고 싶지만 최소한이 일은 끝내야한다.
업데이트 # 2 : 위의 방식으로 호출 된 다른 서브 루틴 내에서 서브 루틴을 호출 할 때 나는 서브 루틴 내에서 다음과 같이 호출합니다.
CALL :SUBROUTINE_WITH_ERROR || EXIT /B 1
이렇게하면 오류는 말하자면 "주"로 다시 전파됩니다. 일괄 처리의 주요 부분은 오류 처리기로 오류를 처리 할 수 있습니다. GOTO : FAILURE
GOTO :EOF