쉘[도스] [문법] 배치파일 문법(.bat)

황제낙엽 2010.07.23 17:08 조회 수 : 77 추천:47

sitelink1 http://blog.naver.com/6420h?Redirect=Log...0095322019 
sitelink2  
sitelink3  
extra_vars6  

한파일에 여러 명령을 일괄 처리하기 위한 실행파일 작성방법 및 문법

 

파일 만들기(***.bat)

[방법]

c:>copy con ***.bat

CLS

DIR

^Z

 

기본 명령어

(1) 일반적인 도스명령를 그대로 사용한다.

(2) 배치에만 사용하는 전용 명령가 있다.

  1. REM       
    : 배치파일 속에 달고 싶은 설명, 주석
  2. PAUSE    
    : 배치파일 실행중 일시 멈추게함
  3. ECHO "문자열"
    : 에코명령 다음에 오는 문자열을 화면에 나타낸다.
  4. ECHO ON
    : 이후부터 '명령어'라인을 화면에 보인다.
  5. ECHO OFF
    : 이후 실행되는 명령어 라인을 화면에 나타내지 않는다.
  6. @ECHO OFF 
    : 'ECHO OFF'라는 그 자체까지 보이지 않게 한다.
  7. ECHO
    : 현재 ECHO ON/OFF 상태를 확인한다.

분기 명령어

: 배치파일의 순차적 수행을 필요에 따라 변경할 때 사용한다.

 

(1) CALL

: 배치파일 실행 중 다른 배치파일을 호출하여 실행시키고 다시 원래의 배치파일로 돌아오게 하는 명령이다.

 

[문법] 

CALL "파일명"

[보기]

c:>COPY CON file1.bat

DIR C: > C:DIRList.TXT

^Z

c:>COPY CON file2.bat
CALL file1.bat
TYPE C:DIRList.TXT

^Z

 

[설명]

"file2.bat"을 실행하면 "file1.bat"란 배치파일을 불러(CALL) 실행하여 "DIRList.TXT"파일을 만든 후, 다시 "file2.bat"파일로 돌아와 "DIRList.TXT"파일을 화면에 출력한다.

 

(2) IF

: 주어진 조건에 따라 명령을 선별적으로 선택, 실행하는 명령이다.

 

[문법]

1. IF EXIST [파일이름] [명령]
    : 찾는 파일이 존재하면 명령을 실행하라

2. IF NOT EXIT [파일이름] [명령]
    : 찾는 파일이 없으면 명령을 실행하라

3. IF "문자열1" == "문자열2" [명령]
    : "문자열1"과 "문자열2"가 서로 일치하면 명령을 실행하라.

4. IF NOT "문자열1" == "문자열2" [명령]
    : "문자열1"과 "문자열2"가 서로 불일치하면 명령을 실행하라.

5. IF ERRORLEVEL [값] [명령]
    : IF명령 바로 앞에서 수행되었던 프로그램이 수행을 마치면서 남긴 종료코드(ExitCode)를 검사하여 지정 값보다 크면 명령을 실행하라는 뜻이다.

6. IF [NOT] ERRORLEVEL [값] [명령]
    : IF명령 바로 앞에서 수행되었던 프로그램이 수행을 마치면서 남긴 종료코드(ExitCode)를 검사하여 지정 값보다 작으면 명령을 실행하라는 뜻이다.

 

[보기]

IF EXIST *.BAK DEL *.BAK
: BAK라는 백업파일이 있으면 모두 지워버리라.

c:>COPY CON TEST1.BAT
@ECHO OFF
IF "%1" == "A" ECHO TESTING A
IF NOT "%1" == "A" ECHO IT IS NOT EQUAL.
^z
: c:>TEST1 A 엔터하면 화면에 "TESTING A"라고 표시한다.
: c:>TEST1 C 엔터하면 A와 같지 않으므로 "IT IS NOT EQUAL"라고 표시한다.

 

c:>COPY CON XY.BAT
XCOPY %1 A:
IF NOT ERRORLEEVEL 0 ECHO COPY FAILED !
IF ERRORLEVEL 0 ECHO SUCCESSFULLY !
^Z
: c:>XY *.* 엔터하면 성공적 수행여부에 따라  'FAILED !' 또는 'SUCCESSFULLY !' 라는 메시지가 나온다.

 

(3) GOTO

: 레이블 이름이 있는 행으로 실행 순서를 옮긴다. '레이블(Label)'은 8자이 내로, 레이블 앞에는 콜론(:)을 사용한다.

 

[문법]

GOTO 레이블

:레이블

[보기]

c:>COPY CON HWPMV.BAT
@ECHO OFF
IF NOT EXIST *.HWP GOTO FIRST
MOVE /-Y *.HWP C:HNCDOC
ECHO HWPFILE MOVE DONE !
GOTO END
:FIRST
ECHO *.HWP FILE NOT FOUND !
:END
^Z

 

[설명]

"HWPMV.BAT"을 실행하면 현재 디렉토리에 있는 모든 HWP 파일을 "c:HNCDOC" 디렉토리로 옮기고 "HWPFILE MOVE DONE !" 메시지를 화면에 보이고 END 레이블로 와서 배치파일을 종료한다. 옮길 HWP 파일이 없으면 "*.HWP FILE NOT FOUND !" 메시지가 나오고 배치파일을 종료한다.

 

(4) 변수

: 바꿔 쓸 수 있는 인자(Replaceable Parameter)를 의사변수라 하며, %0 ~ %9(10개)으로 표시한다.

 

[문법]

c:>명령어 파일1 파일2   "    "   "   "   "   "          파일9
         %0      %1    %2  %3  %4  %5  %6  %7  %8  %9

 

[보기]

c:>COPY CON DIRALL.BAT
DIR %1
pause
DIR %2
pause
type %0
^Z

 

[설명]

"c:>DIRALL A: B:" + (엔터) 명령어 DIRALL(.BAT)은 %0, A:은 %1, B:은 %2 에 해당하므로 '작성예1'의 내용 중 %1,%2,%0에 대입하여 명령을 수행한 결과가 화면에 나오게 된다. 즉 화면에는 'DIR A:'과, 'DIR B:'이 차례로 출력되고 멈췄다가 'DIRALL.BAT' 파일 내용이 출력된다.

 

(5) 기타변수

 

[보기]

c:devwalp>test.bat
~dps0: C:devwalp
~dp0: C:devwalp
~s0: C:devwalptest.bat
~0: test.bat
~dps0..: C:devwalp..
~dps0..: C:devwalp..


(6) SHIFT

: 쉬프트는 옮김, 변위를 의미하는 데 10개 이상의 대체 인자도 사용 가능하다. 대체인자를 한 자리씩 왼쪽으로 이동한다.

 

[보기]

: 지정한 문장(text) 파일들을 차례로 TYPE시키는 배치파일 예.

c:>COPY CON TELLME.BAT
@ECHO OFF
:BEGIN
IF NOT EXIST %1 GOTO END
TYPE %1
SHIFT
GOTO BEGIN
:END
ECHO 더이상 파일이 없습니다.
^Z

 

[설명]

"c:>TELLME AAA.TXT BBB.TXT CCC.TXT .........  " + (엔터)
           %0     %1       %2      %3     ........%15

텍스트 파일명은 특정해야 하며 Wildcard문자(*,?)는 사용할 수 없다. 지정된 여러 파일들에 %1 변수가 차례로 SHIFT(변위)되면서 파일을 대입시켜 내용을 출력한다.
즉, AAA.TXT가 먼저 %1이 되고, 다음 BBB.TXT, 또 CCC.TXT, ... 등이 %1에 대입된다. 계속 10개 이상의 변수도 지정할 수 있다.

지정된 파일이 모두 옮겨 대입되고 나면 배치파일이 끝나게 된다. 배치파일 내용 중 GOTO 명령에서 BEGIN 레이블로 가서 다시 시작하게하는 것을 LOOP(고리)라고 한다.

 

(7) FOR
: FOR 명령은 지정된 횟수 만큼 배치파일이 같은 명령을 계속 반복하게하는 명령, 즉 반복수행(Looping) 명령이다.

 

[문법]

FOR %%변수 IN (셋트 파라미터) DO [명령어] %%변수

: '(셋트 파라미터)'는 일련의 많은 갯수의 파일들을 말하고, '%%변수'는 SET에 명시된 각 파일에 순차적으로 설정되어 명령을 실행하는 대입변수이다. (셋트 파라미터에 와일드카드문자(*,?)를  사용할 수 있다.)

 

[보기]

: 확장명이 BAT,DOC,TXT,CAP인 문장 파일 모두를 차례로 화면에 출력(TYPE)되게 배치파일을 만들어 보자.

c:>COPY CON TYPEALL.BAT

FOR %%Z IN (*.BAT *.DOC *.TXT *.CAP) DO TYPE %%Z
^Z 

 

 

 

번호 제목 sitelink1 글쓴이 날짜 조회 수
75 Unicode Character 'COMMA' (U+002C)   황제낙엽 2011.11.28 51
74 윈도우7 단축키 모음   황제낙엽 2011.03.11 12
73 도스(DOS) 배치 파일을 쉘 스크립트로 변환 http://wiki.kldp.org/HOWTO/html/Adv-Bash...batch.html  황제낙엽 2010.07.23 242
72 [문법] bat(배치)파일 문법 http://blog.naver.com/faceuptoit?Redirec...0004435796  황제낙엽 2010.07.23 68
71 BAT 파일로 프로그램 실행 후 도스창 자동 닫기 http://blog.naver.com/parang3o?Redirect=...0107530173  황제낙엽 2010.07.23 126
70 [Batch]배치파일(.BAT)로, 파일 출력, 텍스트 파일(Text File) 만드는 방법 http://everdream.egloos.com/2971749  황제낙엽 2010.07.23 83
69 Information on batch files   황제낙엽 2010.07.23 80
68 [문법] 배치 프로그래밍 http://cafe.naver.com/mynet.cafe?iframe_...ticleid=13  황제낙엽 2010.07.23 84
» [문법] 배치파일 문법(.bat) http://blog.naver.com/6420h?Redirect=Log...0095322019  황제낙엽 2010.07.23 77
66 Samba 설치   황제낙엽 2009.11.13 134
65 리눅스에서 파일 다운로드   황제낙엽 2009.11.13 13
64 리눅스 os(kernel) version 정보 확인   황제낙엽 2009.11.13 30
63 NetworkManager 관련   황제낙엽 2009.11.12 53
62 Fedora Network Manger(고정IP사용)   황제낙엽 2009.11.02 392
61 Fedora11 에서 Root로 로그인하는 법   황제낙엽 2009.10.30 12
60 Outlook 의 Default 경로   황제낙엽 2009.10.19 10
59 XP 정품 인증 알림창이 계속 뜰때 file   황제낙엽 2009.02.22 52
58 MSVBVM60.DLL file   황제낙엽 2009.02.19 20
57 듀얼코어 패치(INTEL AMD APPLE 총망라) file   황제낙엽 2009.02.01 61
56 [Fedora9] yum update 가 되지 않을 경우   황제낙엽 2008.10.17 14