목차

윈도우 배치파일(Windows Batchfile)

배치파일이란?

배치파일만들기

배치파일명령어

CALL

현재 실행중인 배치 파일을 종료하지 않고 필요한 다른 배치파일을 호출하여 실행한 다음 원래의 배치파일로 다시 돌아오려고 할 때 사용됩니다.

어떤 배치 파일을 실행하는 도중에 경로 C:\bats 에 있는 sample.bat 파일을 실행한 다음 다시 원래의 배치파일로 돌아옵니다.

CHOICE

배치 프로그램 내에서 사용자의 선택을 묻기 위해 사용됩니다. 배치 파일 제작자가 설정한 물음을 출력하면서 지정된 키 입력을 기다립니다. 이 명령은 배치파일 내에서만 사용 가능합니다.

- /C[:]문자열 : 사용자가 선택할 수 있는 키목록을 [] 괄호 내에 ', ' 로 구분하여 출력하고 /C 스위치를 사용하지 않으면 기본적으로 YN이 사용됩니다. - /N : 프롬프트를 출력하지 않도록 합니다. - /S : 사용자의 입력에서 소문자, 대문자를 구분하도록 합니다. - /T[:]기본키, 대기시간 : 기본키를 지정한 후 대기시간 동안 사용자의 키 입력이 없으면 자동적으로 기본키가 입력된 것으로 간주하고 진행됩니다. 지정 가능한 대기시간은 초단위이며 0에서 99 사이의 값입니다. - 메세지 : 화면에 출력될 메세지를 지정합니다.

'다음중에서 하나를 선택하십시오 a, b, C, D[a,b,C,D]? ' 라는 메세지가 출력됩니다.

ECHO

배치파일 실행중에 명령어를 화면에 표시할 것인지의 여부를 설정하며, 그 상태를 표시합니다. 한편 ECHO 명령 뒤에 오는 메세지는 화면에 나타납니다.

- on : 배치 파일 실행중에 그 배치 파일 내의 명령어를 화면에 표시합니다. - off : 배치 파일 실행중에 명령어를 화면에 출력하지 않도록 합니다. - 문자열 : 화면에 출력하고 싶은 메세지를 적어줍니다. - 없음 : 현재 ECHO 설정 상태를 표시합니다.

echo off ☞ 현재 실행중인 배치 파일 내의 명령어를 화면에 나타나지 않도록 함. echo echo 안녕하세요?~ ☞ 현재 echo 설정상태를 표시하며 안녕하세요?~ 라는 문구를 화면에 출력합니다.

FOR

지정된 집합 중의 각각의 요소에 대하여 명령으로 설정한 처리를 반복 실행합니다.

For <변수> IN (<집합>) DO <명령> [<옵션>] ☞ 배치파일용. For %<변수> IN (<집합>) DO <명령> <옵션>] ☞ 순차처리용. * 옵션 - <변수>, &<변수> : 변수로 사용되는 것은 임의의 영문자로 1자만 허용됩니다. 주의할 점은 배치파일에서 사용할 경우는 반드시 처럼 두개를 연달아 사용해야 하며, 일반 도스 프롬프트에서 사용할 때는 % 하나만 사용합니다. - <집합> : <변수>에 대입하고 싶은 값을, 또는 스페이스로 구분하여 대입하고 싶은 순서대로 나열합니다.

- <명령> : <변수>에 대입되어 있는 값에대해 반복적으로 실행하고 싶은 명령을 지정합니다. - <옵션> : 지정한 명령의 옵션이나 FOR 명령에서 지정한 옵션을 설정합니다. * 예 for f in (bak tmp $$$) do del *.f /p ☞ 배치파일의 경우 for %d in (read,wh,file) do hlist %d*.* ☞ 도스 프롬프트에서 실행시 * 설명 : 첫 번째는 bak, tmp, $$$ 를 순서대로 f 환경 변수에 대입하여 차례대로 DEL *.bak /p, DEL *.tmp /p, DEL *.$$$ .p 를 실행한 것과 동일한 결과를 얻게됨.

두번째는 READ,WH,FILE 를 순서대로 %d 환경변수에 대입하여 차례대로 HLIST READ*.*, HLIS TWH *.* , HLIST FILE *.* 를 실행한 것과 동일한 결과를 얻게 됩니다.

GOTO

배치 처리의 흐름을 <레이블>에서 정의되어 있는 위치로 옮깁니다.

◇ 사용법 :Goto <레이블>

◇ 예 : goto loop :loop 각종 처리할 내용

◇ 설명 : 레이블 loop 로 배치 처리의 제어권을 이동시켜 loop 항목에 지정된 각종 처리할 내용을 실행시킵니다.

◇ 참고 : 배치 파일에 레이블 표시는 레이블명 앞에 콜론(:) 을 붙여주며 줄을

            바꿔 맨 앞에 지정해 주어야 합니다.

IF

지정한 조건의 판단 결과에 따라서 배치 처리를 진행합니다.

◇ 사용법 : If [NOT] <조건> <명령>

◇ 옵션

- NOT : 지정한 조건의 반대 조건일 때만 실행합니다.

- 조건

- ERRORLEVEL <수치> : 바로 전에 실행한 명령(프로그램)의 종료 코드가 <수치> 이상일 때에는 참이 되고 <명령> 이 실행됨.

- <문자열1> == <문자열2> : <문자열1> 과 <문자열2> 가 같을 때에만 참이되고 <명령>이 실행됩니다. 주의할 점은 문자열의 대,소문자가 구별되며, 문자열중에 구분기호(콤마,스페이스,세미콜론,등호,탭)가 포함되어 있으면 않됩니다.

- EXIST <파일명> : <파일명>으로 지정한 파일(경로포함)이 존재할 때에만 참이 되고 <명령>이 실행됩니다. <파일명>에는 와일드카드 문자의 사용이 가능합니다.

◇ 예 : if errorlevel 2 goto quit if not %1 ==%2 goto process if exist d:\work\temp.$$$ del d:\work\temp.$$$

◇ 설명 : 직전에 실행한 명령의 종료 코드가 2 이상일 경우 레이블 QUIT로 이동합니다.

환경변수 %1과 환경변수 %2에 대입되어 있는 문자열이 같지 않을 경우에만 레이블 PROCESS 로 이동합니다.

경로 D:\Work 에 temp.$$$ 라는 파일이 존재하면 그 파일을 삭제합니다.

PAUSE

배치 파일 실행을 일시 정지합니다.

◇ 사용법 :Pause [문자열]

◇ 옵션

- 문자열 : 문자열을 생략하면 'press any key to continue…'라는 메세지가 화면에 출력됩니다. 만약 PAUSE 명령 뒤에 어떤 메세지를 지정하여 그 메시지를 출력하고 싶다면 'Echo On' 명령을 우선 내려야 합니다.

◇ 예 : echo on pause 준비가 되었으면 아무키나 누르세요…

◇ 설명 : 배치 처리 중 pause명령을 만났을때 임의의 다른 메시지를 화면에 출력하고 싶다면 예 에서와 같이 반드시 echo on 명령이 선행되어야 하며 예의 경우에는 ' 준비가 되었으면 아무키나 누르세요…' 라는 메세지가 출력됩니다.

◇ 참고 : 위 처럼 하면 화면에 Pause 라는 명령어까지 같이 출력되므로 이런경우 echo on echo 준비가 되었으면 아무키나 누르세요… pause > Null

이런식으로 사용하면 출력하고자 하는 메세지만 화면에 출력됩니다.

REM

배치 파일 내에 주석문을 부여하고 싶을 때 사용합니다.

◇ 사용법 :rem [문자열]

◇ 옵션

- 문자열 : 주석문으로 쓰고 싶은 것을 적어줍니다.

◇ 예 : REM 이 배치파일은 샘플입니다.

배치파일내의 적당한 위치에 적절한 주석문을 붙여두면 배치 처리의 흐름을 일목요연하게 볼 수 있습니다.

SHIFT

배치 파일에 주어진 파라미터(%1~%9)와 실행시에 지정되는 값과의 대응을 하나씩 뒤로 이동하여 표시합니다.

◇ 예 <TEST.BAT> :loop if “%1” == “ ” goto end echo %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 shift goto loop :end

위와 같이 배치 파일을 작성해두고 다음과 같이 배치파일을 실행해 보면 shift 명령이 어떤 역할을 하는지 금방 알 수 있습니다.. C:\bats> test.bat A B C D E F G H I J 0 1 2 3 4 5 ☜똑같이 입력하고 실행후 확인.