배치 스크립트 - 반환 코드
안녕하세요, 미래의 프로그래머 여러분! 오늘 우리는 배치 스크립팅에서 흥미로운 주제인 반환 코드에 대해 배우겠습니다. 프로그래밍에 전혀 익숙하지 않으신 분들도 걱정하지 마세요; 저는 여러분을 단계별로 안내해 드릴 것입니다. 저는 수년 동안 수많은 학생들을 가르치면서 이와 같은 여정을 함께 해 왔습니다. 그러니 커피 한 잔을 (또는 여러분의 좋아하는 음료를) 마시면서 시작해 보세요!
반환 코드 이해하기
이제부터 본격적인 내용으로 들어가기 전에, 반환 코드가 무엇인지 이해해 보겠습니다. 여러분의 로봇 친구를 잠재임무에 보내고 싶을 때, 그 잠재임무가 성공적으로 완료되었는지 확인하고 싶을 것입니다, 아닙니까? 프로그래밍에서 반환 코드는 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