레이블이 batch인 게시물을 표시합니다. 모든 게시물 표시
레이블이 batch인 게시물을 표시합니다. 모든 게시물 표시

2021년 6월 27일 일요일

배치 파일에서 exit 코드 설정하기 errorlevel

batch파일속에서 exe파일을 실행시키고 exe파일의 exit코드를 가져오고 싶은 경우가 있습니다.

직접 exe파일을 실행시켜서 결과를 받으면 되지 이렇게 복잡하게 하는 경우가 있을까 싶겠지만, 이것은 언제나 부지불식간에 우리 주위에서 언제나 예상못하고 벌어지는 일입니다.

batch파일은 쉽게 고칠 수 있으며 컴파일 비용이 발생하지도 않죠. 그만큼의 장점을 가지고 있습니다.

이것을 진행하려면 batch파일 커맨드를 몇가지 알아야합니다.


%ERRORLEVEL%

이전 실행했던 실행프로그램의 exit(탈출 코드) 값입니다.

exit

배치 파일 실행도중에 배치파일을 끝낼때 사용합니다.

exit 뒤에 인자로 탈출코드를 설정할 수 있습니다.


구현

windows의 배치 파일도 하나의 program이라고 생각하면 됩니다.

예제입니다.


8_exit_code.py 파일 내용

print("Hello")
exit(99)


8_exit_test.bat 파일의 내용

python 8_exit_code.py
exit /b %ERRORLEVEL%


8_exit_example.bat 파일의 내용

@echo off
echo ******** 0 **********
call 8_exit_test.bat
echo ******** 1 **********
echo %ERRORLEVEL%
echo ******** 2 **********
8_exit_test.bat
echo ******** 3 **********
echo %ERRORLEVEL%
echo ******** 4 **********

결과

******** 0 **********
Hello
******** 1 **********
99
******** 2 **********
Hello


설명

결과를 보면 실행이 덜된듯한 느낌이 있다. 앞에서 설명하지 않은 batch 파일의 call 기능 때문인데 batch파일을 실행시 call 로 호출하지 않으면 batch파일 호출한곳으로 돌아오지 않는다. 그래서 3,4번이 실행되지 않았다.

exit시 /b 옵션이 있는데 현재 /b batch파일만 종료하게된다. /b옵션이 없으면 shell 전체가 끝나게되어 배치파일 뒤쪽으로는 아무것도 실행하지 못하게 된다.


EXIT [/B] [exitCode]


  /B          CMD.EXE 대신 현재 일괄 처리 스크립트를 끝내기 위해

              지정합니다. 외부 일괄 처리 스크립트에서 실행하면

              CMD.EXE를 끝냅니다.


  exitCode    번호를 지정합니다. /B가 지정되면 ERRORLEVEL을

              지정한 번호로 설정합니다. CMD.EXE를 끝내면,

              프로세스 종료 코드를 지정한 번호로 설정합니다.