Errorlevel이란 무엇입니까?

Microsoft Windows와 MS-DOS에서 오류 수준 은 자식 프로세스가 종료 될 때 반환되는 정수입니다.

프로세스가 성공적이면 Errorlevel은 0 입니다.

프로세스가 오류가 발생하면 Errorlevel은 1 이상 입니다.

오류 수준 테스트는 명령 줄이나 배치 파일에서 일련의 명령을 실행할 때 유용합니다.

조건식을 사용하면 일련의 명령을 지정하여 이전 명령이 성공한 경우에만 발생할 수 있습니다. 또한 이전 명령이 실패한 경우에만 명령을 실행하여 오류를 테스트 할 수 있습니다. 경우에 따라 프로그램에서 지원하는 경우 특정 유형의 오류를 테스트 할 수도 있습니다.

이전 명령이 실패한 경우 다른 명령 세트가 실행되도록 명령 실행을 분기 할 수도 있습니다.

조건부 "if [not] errorlevel"

errorlevel이 n 보다 크거나 같으면 조건부 표현식 " if errorlevel n "이 true입니다.

마찬가지로, errorlevel이 n 보다 작 으면 " errorlevel n 이 아니면"이 참입니다.

Windows 명령 행에서 몇 가지 명령을 실행하여 이들을 사용하는 방법에 대한 몇 가지 예를 살펴 보겠습니다.

시작하려면 명령 프롬프트 창을 엽니 다. Windows + 키를 누른 상태에서 X 키를 누르고 명령 프롬프트를 선택합니다.

이제 간단한 명령을 실행 해 보겠습니다.

 mkdir mydirectory 

mkdir 을 실행할 때 (현재 디렉토리에 "mydirectory"라는 디렉토리가 없다고 가정하면) 디렉토리 mydirectory 가 작성됩니다. 명령이 성공적 이었으므로 mkdir이 종료되면 errorlevel을 0으로 설정합니다.

errorlevel 0을 테스트 해 봅시다.

테스트 성공 : "errorlevel이 아니면"

errorlevel 1이 아닌 경우 조건문을 사용하여 errorlevel 0 (성공)을 테스트 할 수 있습니다. 그게 사실이라면 (errorlevel이 1보다 작 으면) 조건을 따르는 명령이 실행됩니다. 아래 예제에서는 echo 명령을 사용하여 화면에 메시지를 인쇄합니다.

 errorlevel 1이 아닌 경우 echo 마지막 명령이 성공했습니다. 
 마지막 명령이 성공적이었습니다. 

위에서 설명한 것처럼, 우리가 실행 한 mkdir 명령은 성공적이었습니다.

그러나 디렉토리를 다시 만들려고하면 디렉토리 mydirectory가 이미 존재하기 때문에 mkdir 이 실패합니다.

 mkdir mydirectory 
 하위 디렉토리 또는 파일 예제가 이미 있습니다. 

mkdir 이 실패하면 "하위 디렉토리 또는 파일 예제가 이미 있습니다"라는 자체 오류 메시지를 제공하고 errorlevel을 1로 설정합니다. 조건문을 다시 실행하면 다음과 같이됩니다.

 errorlevel 1이 아닌 경우 echo 마지막 명령이 성공했습니다. 

아무 반응이 없습니다. 우리가 성공을 테스트했기 때문에 echo 명령이 실행되지 않습니다 - errorlevel이 1보다 작고 그 조건은 false입니다.

테스트 실패 : "errorlevel"

errorlevel이 1 이상이면 true를 반환하는 errorlevel 1을 사용 하여 오류를 구체적으로 테스트 할 수 있습니다.

 if errorlevel 1 echo 마지막 명령이 실패했습니다. 
 마지막 명령이 실패했습니다. 

조건이 충족되었지만 ( mkdir이 이전에 errorlevel을 1로 설정했기 때문에) echo 명령이 실행됩니다. errorlevel이 2, 3, 4 등인 경우에도 실행됩니다. errorlevel이 0이면 실행되지 않습니다.

if..else로 분기 실행

위의 예에서는 성공 또는 실패를 테스트했지만 둘 다 테스트하지는 않습니다.

다음과 같은 형식의 if / else 문을 사용하여 성공과 실패를 테스트 할 수 있습니다.

 if [ not ] errorlevel n ( command1 ) else ( command2 ) 

주 : 괄호는 다른 단어와 명령을 구분하는 데 필요합니다.

예 :

 mkdir newtest 
 그렇지 않은 경우 errorlevel 1 (에코 성공) else (에코 실패) 
 성공 
 mkdir newtest 
 서브 디렉토리 또는 newtest 파일이 이미 있습니다. 
 그렇지 않은 경우 errorlevel 1 (에코 성공) else (에코 실패) 
 실패 

% ERRORLEVEL % 환경 변수

흔히 errorlevel은 환경 변수 % ERRORLEVEL % 에도 저장됩니다. 이 값은 현재 오류 수준에 액세스하는 편리한 방법입니다.

다음 예제에서는 dir 명령을 두 번, 한 번 성공적으로 한 번 실행합니다. 각 후, 우리는 % ERRORLEVEL % 의 값을 표시합니다.

 mkdir 예제 
 견본 
 C : \ Users \ Hope \ example의 디렉토리 06/10/2018 09:43 PM. 06/10/2018 09:43 PM .. 0 파일 (들) 0 바이트 2 Dir (들) 50, 671, 132, 672 바이트 무료 
 echo % ERRORLEVEL % 
 0 
 철자가 틀린 
 C : \ Users \ Hope 파일을 찾을 수없는 디렉토리 
 echo % ERRORLEVEL % 
 1 

조건에 % ERRORLEVEL % 사용

다음과 같이 조건에 % ERRORLEVEL % 를 사용할 수 있습니다.

 % ERRORLEVEL % NEQ 0 echo Errorlevel이 0이 아니면 마지막 명령이 실패했습니다. 

팁 : NEQ 는 " 같지 않음 "을 의미하는 관계 연산자입니다.

참고 : % ERRORLEVEL %가 항상 올바르지 않습니다.

% ERRORLEVEL % 는 [ not ] errorlevel 과 같지 않으며 두 값이 항상 같지는 않습니다. 특히, 오류 수준이 변경되면 % ERRORLEVEL % 가 항상 업데이트되지는 않습니다. 자세한 내용은 Raymond Chen의 MSDN 블로그 게시물을 참조하십시오.

이러한 이유로, 프로덕션 환경에서 errorlevel을 테스트하는 경우 [ not ] errorlevel 을 사용 하는 것이 좋습니다.

Errorlevel 조회 도구

고급 사용자와 소프트웨어 개발자를 위해 Microsoft는 명령 줄 오류 수준 조회 도구 err.exe를 출시했습니다 . 숫자 또는 내부 이름으로 오류 레벨을 검색하고 오류 레벨이 정의 된 헤더 파일로 검색을 제한 할 수 있습니다.

 err /winerror.h 0 
 # winerror.h가 선택되었습니다. # 16 진수 0x0 / 10 진수 0 : ERROR_SUCCESS winerror.h # 작업이 성공적으로 완료되었습니다. NO_ERROR winerror.h SEC_E_OK winerror.h S_OK winerror.h "0"에 대해 일치하는 # 4 번이 발견되었습니다. 
 오류 / cmdmsg.h 9009 
 # cmdmsg.h가 선택되었습니다. # 소수점 이하 9009 / 16 진수 0x2331 : MSG_DIR_BAD_COMMAND_OR_FILE cmdmsg.h # '% 1'은 (는) 내부 또는 외부 명령, # 작동 가능한 프로그램 또는 배치 파일로 인식되지 않습니다. 1 번 검색 결과 : "9009" 

Microsoft에서 직접 도구를 다운로드 할 수 있습니다.

프로그래밍 용어