Tuesday, August 28, 2007
배치파일 함수 구현, BAT에서 GOSUB 문 서브루틴, 고급 BATCH 테크닉
배치파일에서 간단한 함수를 만드는 방법입니다. 제대로 된 본격적인 함수는 아니고 함수 비슷하게 작동하는 "서브루틴"입니다. GW-BASIC 의 GOSUB문과 비슷합니다. 아주 복잡한 배치에서만 가끔 필요한 고급 테크닉입니다.
FOO 라는 함수에 5와 6을 인수로 입력하면, 곱하기 결과인 30 을 화면에 출력하는 간단한 예제입니다. 즉 곱셈 함수인데, 실제로는 곱셈 함수는 필요 없고 별표(*) 기호로 곱하기를 하면 됩니다.
우선 call문으로, 예를 들어 FOO 라는 함수명(실은 함수가 아니라 라벨)을 호출하고, FOO 라는 레이블 뒤에 5와 6이라는 인수 즉 아큐먼트(파라미터) 2개를 지정합니다.
call :FOO 5 6
예제 배치파일 파일명: example.bat
소스 맨 아래에 FOO 라는 간이 함수가 정의되어 있습니다. 반환값을 돌려주지는 못하고 그냥 결과를 화면에 출력합니다. 인수를 받을 때에는 %1 로 첫번째 인수를 받고 %2 로 두번째 인수를 받는 식입니다.
함수 정의 부분이 시작되기 전에 goto :EOF 문을 넣어주어 배치파일을 종료시켜야 합니다. 그렇지 않으면 함수 정의 부분까지 다시 실행되어 버립니다.
참고: ▶▶ 배치파일 문자열 함수는? 스트링 추출 출력 방법; Batch String
FOO 라는 함수에 5와 6을 인수로 입력하면, 곱하기 결과인 30 을 화면에 출력하는 간단한 예제입니다. 즉 곱셈 함수인데, 실제로는 곱셈 함수는 필요 없고 별표(*) 기호로 곱하기를 하면 됩니다.
우선 call문으로, 예를 들어 FOO 라는 함수명(실은 함수가 아니라 라벨)을 호출하고, FOO 라는 레이블 뒤에 5와 6이라는 인수 즉 아큐먼트(파라미터) 2개를 지정합니다.
call :FOO 5 6
BAT 함수와 서브루틴 파라미터 구현 예제
예제 배치파일 파일명: example.bat
@echo off
setlocal
call :FOO 5 6
goto :EOF
:FOO
set /a RESULT=%1 * %2
echo %RESULT%
setlocal
call :FOO 5 6
goto :EOF
:FOO
set /a RESULT=%1 * %2
echo %RESULT%
소스 맨 아래에 FOO 라는 간이 함수가 정의되어 있습니다. 반환값을 돌려주지는 못하고 그냥 결과를 화면에 출력합니다. 인수를 받을 때에는 %1 로 첫번째 인수를 받고 %2 로 두번째 인수를 받는 식입니다.
함수 정의 부분이 시작되기 전에 goto :EOF 문을 넣어주어 배치파일을 종료시켜야 합니다. 그렇지 않으면 함수 정의 부분까지 다시 실행되어 버립니다.
참고: ▶▶ 배치파일 문자열 함수는? 스트링 추출 출력 방법; Batch String
tag: batch
배치파일 | DOS CMD BATCH .BAT
<< Home