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

황제낙엽 2010.07.23 17:08 조회 수 : 863 추천: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 글쓴이 날짜 조회 수
83 윈도우7에서 FTP를 네트웍드라이브로 연결 file   황제낙엽 2015.12.31 853
82 [RDP Wrapper1.6]윈도우10 에서 멀티 세션으로 원격 접속하기 secret https://github.com/stascorp/rdpwrap/releases  황제낙엽 2015.11.25 8395
81 VMware Player를 계속 무료로 사용할 수 있습니까? https://www.vmware.com/kr/products/player/faqs/faqs  황제낙엽 2015.06.26 748
80 버추얼박스 라이선스 정보 https://www.virtualbox.org/wiki/Licensing_FAQ  황제낙엽 2015.06.23 621
79 Windows7 제품과 라이선스 종류 file   황제낙엽 2014.03.13 851
78 XP 업데이트 사이트 http://shining96.tistory.com/257  황제낙엽 2013.10.29 885
77 비스타에서 심볼릭링크,하드링크,디렉토리교차점 생성방법 - mklink 명령어 [1]   황제낙엽 2013.08.31 1021
76 XP 시스템 종료 명령어   황제낙엽 2012.04.05 679
75 Unicode Character 'COMMA' (U+002C)   황제낙엽 2011.11.28 969
74 윈도우7 단축키 모음   황제낙엽 2011.03.11 725
73 도스(DOS) 배치 파일을 쉘 스크립트로 변환 http://wiki.kldp.org/HOWTO/html/Adv-Bash...batch.html  황제낙엽 2010.07.23 933
72 [문법] bat(배치)파일 문법 http://blog.naver.com/faceuptoit?Redirec...0004435796  황제낙엽 2010.07.23 763
71 BAT 파일로 프로그램 실행 후 도스창 자동 닫기 http://blog.naver.com/parang3o?Redirect=...0107530173  황제낙엽 2010.07.23 850
70 [Batch]배치파일(.BAT)로, 파일 출력, 텍스트 파일(Text File) 만드는 방법 http://everdream.egloos.com/2971749  황제낙엽 2010.07.23 844
69 Information on batch files   황제낙엽 2010.07.23 1307
68 [문법] 배치 프로그래밍 http://cafe.naver.com/mynet.cafe?iframe_...ticleid=13  황제낙엽 2010.07.23 816
» [문법] 배치파일 문법(.bat) http://blog.naver.com/6420h?Redirect=Log...0095322019  황제낙엽 2010.07.23 863
66 Samba 설치   황제낙엽 2009.11.13 914
65 리눅스에서 파일 다운로드   황제낙엽 2009.11.13 650
64 리눅스 os(kernel) version 정보 확인   황제낙엽 2009.11.13 716