배치 스크립트 - 반환 코드

안녕하세요, 미래의 프로그래머 여러분! 오늘 우리는 배치 스크립팅에서 흥미로운 주제인 반환 코드에 대해 배우겠습니다. 프로그래밍에 전혀 익숙하지 않으신 분들도 걱정하지 마세요; 저는 여러분을 단계별로 안내해 드릴 것입니다. 저는 수년 동안 수많은 학생들을 가르치면서 이와 같은 여정을 함께 해 왔습니다. 그러니 커피 한 잔을 (또는 여러분의 좋아하는 음료를) 마시면서 시작해 보세요!

Batch Script - Return Code

반환 코드 이해하기

이제부터 본격적인 내용으로 들어가기 전에, 반환 코드가 무엇인지 이해해 보겠습니다. 여러분의 로봇 친구를 잠재임무에 보내고 싶을 때, 그 잠재임무가 성공적으로 완료되었는지 확인하고 싶을 것입니다, 아닙니까? 프로그래밍에서 반환 코드는 exactamente 그 역할을 합니다. 프로그램이 자신의 작업이 성공적으로 완료되었는지, 아니면 문제가 발생했는지 알려주는 작은 메시지들입니다.

배치 스크립팅에서는 이러한 반환 코드를 종종 "에러 레벨"이라고 부릅니다. 이 개념을 더 깊이 탐구해 보겠습니다.

에러 레벨

배치에서 에러 레벨은 마지막으로 실행된 명령어나 프로그램의 반환 코드를 저장하는 특별한 변수입니다. 마치 작업의 성공 여부를 알려주는 점수카드 같은 것입니다.

에러 레벨 확인하기

에러 레벨을 확인하려면 %ERRORLEVEL% 변수를 사용합니다. 다음은 간단한 예제입니다:

@echo off
dir C:\NonExistentFolder
echo The error level is %ERRORLEVEL%

이 스크립트를 실행하면 다음과 같은 것을 보게 됩니다:

File Not Found
The error level is 1

dir 명령어가 폴더를 찾을 수 없었기 때문에, 에러 레벨이 1로 반환되었습니다. 만약 폴더가 존재했다면, 에러 레벨은 0이 됩니다.

에러 레벨을 결정에 사용하기

에러 레벨은 스크립트에서 결정을 내리는 데 매우 유용합니다. 다음은 예제입니다:

@echo off
ping google.com
if %ERRORLEVEL% EQU 0 (
echo Internet connection is working!
) else (
echo Oops! No internet connection.
)

이 스크립트에서 우리는 구글을 ping을 보내고 있습니다. 만약 ping이 성공적이면 (에러 레벨 0), 인터넷 연결이 작동하고 있다는 것을 알 수 있습니다. 그렇지 않으면 에러 메시지를 표시합니다.

루프

이제 에러 레벨을 이해했으므로, 루프에서 어떻게 사용할 수 있는지 살펴보겠습니다. 루프는 코드의 반복을 가능하게 하는 마법의轮이며, 특정 조건이 충족될 때까지 동작을 반복합니다.

기본 루프 구조

다음은 1에서 5까지 카운트하는 간단한 루프입니다:

@echo off
set counter=1
:loop
if %counter% LEQ 5 (
echo Counter is %counter%
set /a counter+=1
goto loop
)
echo Loop finished!

이 스크립트는 다음과 같은 출력을 생성합니다:

Counter is 1
Counter is 2
Counter is 3
Counter is 4
Counter is 5
Loop finished!

루프에서 에러 레벨 사용하기

루프와 에러 레벨을 결합하여 더욱 동적인 스크립트를 만들 수 있습니다. 다음은 예제입니다:

@echo off
:retry
ping google.com
if %ERRORLEVEL% NEQ 0 (
echo Connection failed. Retrying in 5 seconds...
timeout /t 5 >nul
goto retry
)
echo Connection successful!

이 스크립트는 구글을 ping할 때까지 계속 시도합니다. 마치 끊임없이 잠재임무를 시도하는 인내심이 강한 로봇과 같습니다!

명령줄 인수를 통해 루프

명령줄 인수는 스크립트를 실행할 때 주는 특별한 지시입니다. 이제 명령줄 인수를 루프를 통해 어떻게 처리할 수 있는지 살펴보겠습니다.

기본 인수 루프

다음은 모든 인수를 출력하는 스크립트입니다:

@echo off
:loop
if "%1"=="" goto end
echo Argument: %1
shift
goto loop
:end
echo All arguments processed!

이 스크립트를 script.bat apple banana cherry와 같이 실행하면 다음과 같은 출력을 보여줍니다:

Argument: apple
Argument: banana
Argument: cherry
All arguments processed!

인수와 에러 레벨을 사용하기

다음은 인수로 전달된 파일이 존재하는지 확인하는 더 복잡한 스크립트입니다:

@echo off
:loop
if "%1"=="" goto end
if exist %1 (
echo %1 exists
) else (
echo %1 does not exist
set ERRORLEVEL=1
)
shift
goto loop
:end
if %ERRORLEVEL% NEQ 0 (
echo Some files were not found
) else (
echo All files exist
)

이 스크립트는 각 인수로 전달된 파일이 존재하는지 확인합니다. 만약 파일이 존재하지 않으면, 에러 레벨을 1로 설정합니다. 마지막에 모든 파일이 존재하는지 확인합니다.

결론

축하합니다! 여러분은 반환 코드를 통해 배치 스크립팅의 세계로 첫 걸음을 뗐습니다. 기억하시길, 어떤 새로운 언어를 배우는 것처럼, 연습이 최우선입니다. 두려워하지 마세요. 실험하고 실수를 하세요 - 우리 모두 그렇게 배웠습니다!

여기서 다루었던 방법들의 빠른 참조 표를 제공합니다:

방법 설명
%ERRORLEVEL% 마지막 명령어의 반환 코드를 확인하는 변수
if %ERRORLEVEL% EQU 0 마지막 명령어가 성공했는지 확인
goto label 스크립트의 특정 레이블로 이동
set /a variable+=1 변수를 증가시키기
shift 다음 명령줄 인수로 이동
if exist filename 파일이 존재하는지 확인

계속 코딩하고 배우며, 가장 중요한 것은 즐기세요! 기억하시길, 모든 전문가는 초보자였습니다. 어쩌면 언젠가 여러분도 자신의 프로그래밍 튜토리얼을 쓰게 될지도 모릅니다!

Credits: Image by storyset