- 동시 실행 문제
파일이 실행된 후에 그 파일이 종료되고 커맨드가 실행창으로 넘어올 때까지 대기하게 된다.
start 명령어의 /d 옵션은 파일의 시작 위치를 나타내며, /b 는 새로 창을 띄우지 않겠다는 옵션이다.
(cmd 에서 start /? 으로 확인해보자)
- 배치 파일의 실행
파일 만들기(***.bat)
[방법]
c:\>copy con ***.bat
CLS
DIR
^Z
기본 명령어
(1) 일반적인 도스명령를 그대로 사용한다.
(2) 배치에만 사용하는 전용 명령가 있다.
- REM
: 배치파일 속에 달고 싶은 설명, 주석 - PAUSE
: 배치파일 실행중 일시 멈추게함 - ECHO "문자열"
: 에코명령 다음에 오는 문자열을 화면에 나타낸다. - ECHO ON
: 이후부터 '명령어'라인을 화면에 보인다. - ECHO OFF
: 이후 실행되는 명령어 라인을 화면에 나타내지 않는다. - @ECHO OFF
: 'ECHO OFF'라는 그 자체까지 보이지 않게 한다. - ECHO
: 현재 ECHO ON/OFF 상태를 확인한다.
분기 명령어
: 배치파일의 순차적 수행을 필요에 따라 변경할 때 사용한다.
(1) CALL
: 배치파일 실행 중 다른 배치파일을 호출하여 실행시키고 다시 원래의 배치파일로 돌아오게 하는 명령이다.
[문법]
CALL "파일명"
[보기]
c:\>COPY CON file1.bat
DIR C:\ > C:DIRList.TXT
^Zc:\>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
: 주어진 조건에 따라 명령을 선별적으로 선택, 실행하는 명령이다.
[문법]
- IF EXIST [파일이름] [명령]
: 찾는 파일이 존재하면 명령을 실행하라 - IF NOT EXIT [파일이름] [명령]
: 찾는 파일이 없으면 명령을 실행하라 - IF "문자열1" == "문자열2" [명령]
: "문자열1"과 "문자열2"가 서로 일치하면 명령을 실행하라. - IF NOT "문자열1" == "문자열2" [명령]
: "문자열1"과 "문자열2"가 서로 불일치하면 명령을 실행하라. - IF ERRORLEVEL [값] [명령]
: IF명령 바로 앞에서 수행되었던 프로그램이 수행을 마치면서 남긴 종료코드(ExitCode)를 검사하여 지정 값보다 크면 명령을 실행하라는 뜻이다. - 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:\dev\walp>test.bat
~dps0: C:\dev\walp\
~dp0: C:\dev\walp\
~s0: C:\dev\walp\test.bat
~0: test.bat
~dps0\..: C:\dev\walp\\..
~dps0..: C:\dev\walp\..
(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
[출처] 배치파일 문법(.bat)|작성자 정팀장
http://ohgyun.com/173
'Working, Studying, 잡다구리보관소 > IT, Science' 카테고리의 다른 글
작업스케줄러로 UAC(사용자 계정 컨트롤) 예외 프로그램 실행하기 (0) | 2014.03.07 |
---|---|
[Java] 객체 사용후 null 할당! 해야하나 말아야 하나? (0) | 2014.03.05 |
크롬 시작화면이 바꼈어요!! (0) | 2013.10.14 |
아이폰 스타일 안드로이드 토글버튼 (0) | 2013.09.10 |
windows에서 airprint 사용하기(모든 프린터) (0) | 2013.06.21 |