Dev

배치 파일과 도스 명령어

에린_1 2024. 8. 5. 09:46
728x90

배치 파일과 도스 명령어

  • 도스의 배치 파일에서 사용되는 명령어는 도스 프롬프트에서 실행 가능한 모든 명령어들이 포함된다. 그러나 배치 파일에서만 전용으로 사용되는 명령어들이 따로 존재하는데, 이러한 명령들의 형식과 사용법을 익혀 두는 게 배치 파일에 접근하기 위한 가장 우선적인 방법이다.

ECHO

  • ECHO는 배치 파일 안에 있는 명령이 실행될 때 명령어의 이름을 보여주거나 감추어 주는 기능을 한다. 즉 명령 반항(ECHO) 상태를 설정하거나 취소하기 위해 사용되는 명령이다. 마치 토글(TOGGLE)키처럼 동작하기 때문에 처리 과정을 화면에 표시 여부를 쉽게 조정하게 된다.
  • 형식 : ECHO ON or ECHO OFF
  • 배치 파일에서 ECHO OFF로 지정되었을 때에는 명령어 이름을 보여주지 않고 실행함으로써 사용자가 혼동될 가능성이 있는 반면 화면이 지저분하지 않게 해준다. ECHO의 기본값은 ECHO ON으로 설정되어 있다. 따라서 도스는 배치 파일의 실행이 끝나면 다시 ECHO ON으로 리셋(RESET)시키게 되는데, 도스 3.3 이후부터는 ECHO OFF 자체도 앞에 @표시를 함께 써 줌으로써 ECHO OFF가 화면에 표시되는 것을 막을 수 있게 되었다.

REM

  • 배치 파일 내의 실행중인 명령과 기능 등을 사용자가 이해하기 쉽도록 주석을 달 수 있게 해준다.
  • 형식 :REM [설명문]
  • 이 주석은 배치 파일이 길어진다던가 복잡해질 경우 프로그램의 이해를 높이기 위해 달아 주는 것이 좋다. 일반적으로 REM 명령은 배치 파일 작성자와 작성 날짜, 사용 목적 등을 기술하는데 사용하게 되며, 동작 과정을 이해하기 쉽게 주석을 이용하여 보조 설명을 달거나 옵션과 도움말 설명을 위해 사용하기도 한다.
  • 또, 이 REM 명령이 사용되는 경우는 배치 파일 내의 명령어 중에서 일시적으로 실행을 중지하려는 명령이 있을 때 사용되기도 한다. 이 명령을 명령어 앞에 적어 두면 도스가 주석문으로 인식하기 때문에 실행이 되지 않는다. 그리고 작성된 배치 파일이 원하는 대로 실행되지 않는다면, 명령어 앞에 REM을 추가하여 해당 명령어를 실행시키지 않은 상태로 만들어 놓고 문제가 발생한 행을 찾아낼 수 있다.

PAUSE

  • 처리중인 배치 파일을 멈추고 사용자에게 조건적인 메시지를 보여준다.
  • 사용자가 어떤 키를 눌렀을 때 계속해서 처리된다. 이 명령은 배치 파일을 일시 중단시키는 기능을 하는데 지나가 버리는 화면을 사용자가 읽기 편하게 잡아 놓기 위해 사용되거나 다른 준비 작업을 위해 약간의 여유를 주기 위해 이용된다.
  • 형식 : PAUSE [message]
  • 배치 파일 실행중에 PAUSE 명령을 만나면, 도스는 “Press any key to continue …” 과 같은 메시지를 화면에 보여준다. 또한 이 PAUSE 명령은 배치 작업 계속 실행 여부를 판단하게 위해 적합하다. 즉 배치 파일의 연속적인 실행 과정 내에 이 PAUSE 명령을 삽입해 둠으로써 CTRL + C를 이용한 실행 중단을 쉽게 할 수 있다.

IF

  • 배치 파일의 조건적인 처리를 수행하도록 하는 명령어이다.
  • IF문에 투입된 내용의 값이 조건을 만족하는 참(True)이면, IF문 다음의 문장을 수행한다. 그러나 조건의 값이 거짓(False)이면 뒤따라오는 문장의 명령을 무시하고 넘어간다.
  • 일반적인 IF문의 종류로는 6가지의 독특한 조건이 허용된다.
    1. IF EXIST filename.ext(or parameter) Command
    2. IF NOT EXIST filename.ext(or parameter) Command
    3. IF String1 == String2 Command
    4. IF NOT String1 == String2 Command
    5. IF ERRORLEVEL value Command
    6. IF NOT ERRORLEVEL value Command
  • 도스 배치 파일에서 사용되는 파라미터(변수)는 %0, %1, %2 … %9와 같은 10개가 있다. 그리고 프롬프트 상태에서 맨 앞에 오게 되는 명령어는 대개 변수 %0에 배당된다.

FOR

  • 일종의 반복 조건문으로 주어진 조건을 만족할 때까지 도스 명령어를 실행한다.
  • 형식 : FOR %%변수명 IN (SET) DO Command
  • 퍼센트 기호 두 개와 함께 쓰인 변수는 앞에서 다뤘던 숫자 변수와 달리 ‘이름을 가진 변수(NAMED VARIABLE)이다. 이 때문에 숫자 변수와 구분하기 위해 이름 변수는 앞에 %를 두 개 붙여 준다.
  • FOR 다음의 변수명으로는 한 문자로된 알파벳만을 사용할 수 있다. 또한 괄호 안의 (SET)은 범위를 알려주는 것으로 *(ASTERISK)나 파일들의 이름을 스페이스(SPACE)나 ,(COMMA)로 구분하여 적어 줘도 된다.

GOTO

  • 조건에서 만족하면 지정된 레이블로 제어를 옮겨 주는 기능을 한다. 레이블명은 :(COLON)을 앞세우고 적는다. 이 GOTO 명령은 배치 프로그램 안에서만 사용되는 명령으로 도스 명령어 처리기에게 지정된 레이블명이 있는행으로 제어권을 이동하게 한다. 일단 제어권이 이동한 다음에는 연속해서 그 다음 행의 명령들을 처리한다.
  • GOTO 명령에서 유효한 레이블명은 공백(SPACE)이나 ;(세미콜론), =(EQUAL)과 같은 기호를 포함하지 않아야 하며, 8자를 넘지 않는 게 좋다. 이는 GOTO 명령이 레이블명에 사용된 문자 중 첫 8자까지 만을 인식하기 때문이다.

CALL

  • 배치 파일 내에서 명령의 중단이나 정지없이 또 다른 배치 파일을 불러 실행시키도록 하는 명령이다.
  • 형식 : CALL [drive:][path] filename [batch-parameters]
  • 다른 명령과는 달리 파이프 기호나 리디렉션 기호를 CALL 명령과 함께 사용할 수 없다. 또한 배치 프로그램 안에서 반복해서 자신을 불러 들일 수 있는 RECURSIVE 호출이 가능하지만 이 경우 탈출 명령을 만들어 두지 않으면 계속해서 반복 루프에 걸리게 된다. 이때 사용자가 강제로 배치 파일의 실행을 중지하기 위해서는 CTRL + C를 눌러 프로그램 실행을 그만두게 해야 한다.
  • CALL 명령은 배치 파일 중간에 사용되어 다른 배치 파일을 불러들여 실행하고 다시 제어권을 CALL문이 사용된 배치 프로그램으로 넘기게 된다. 그러나 배치 파일의 마지막 줄에 다른 배치 파일을 실행하기 위해서는 CALL문을 사용하지 않아도 된다. 왜냐하면 제어권을 원래의 호출 프로그램으로 되돌릴 필요가 없기 때문이다.

SHIFT

  • 배치 파일의 변수들을 왼쪽으로 하나씩 이동시킨다.

CHOICE

  • 배치 파일을 사용자와 대화식으로 구성하기 위한 명령이다. CHOICE는 지정된 키 중에서 사용자가 원하는 키를 누를 때까지 정지 상태의 메시지 프롬프트를 제공한다.
  • 형식 : CHOICE [/C[:]keys] [/N] [/S] [/T[:]char, sec(nn)] [test]

파라미터와 스위치

  • text
    • 사용자가 선택키를 고를 때까지 화면에 나타내고 싶은 메시지를 적어 줄 수 있다. 그러나 프롬프트 앞에 단지 문자열의 일부분으로써 스위치 구분자 (/)를 사용하려 한다면, 인용 부호(Quatation)를 이용해 표시해 줘야 한다.
  • /C[:]keys
    • 프롬프트에 할당된 키를 명시한다. 각 키의 정의는 대괄호([,]) 안에 정의되며 콤마(,)에 의해 구분되고 물음표(?)가 뒤따라오게 된다. 그러나 만약 /c 스위치가 정의되지 않으면 디폴트 값인 YN(Yes, No)이 사용된다. 또한 구분자인 콜론의 사용은 선택적이다.
  • /N
    • CHOICE 명령에서 프롬프트를 표시하지 않는다. 그러나 프롬프트 앞에 나타나는 text에서 지정한 메시지는 나타난다. 또 /N 스위치를 사용했다하더라도 /C 스위치에 지정된 키의 사용은 유효하다. 다만 화면에 표시하지 않는 것뿐이므로 선택키가 안 보인다고 당황할 필요는 없다.
  • /S
    • 선택키의 대문자와 소문자 입력을 구분하는 동작을 한다.
  • /T[:]char,sec(nn)
    • char에 지정된 디폴트 선택키를 sec(초단위)에 지정된 시간만큼 지연시킨 후에 실행되도록 한다. char에 사용되는 문자는 /C 스위치에서 지정한 선택문자들에 포함된 것이어야 하며, 지연 시간의 범위는 0부터 99초까지의 초단위 시간을 사용할 수 있다.
728x90

'Dev' 카테고리의 다른 글

젠킨스(Jenkins)  (0) 2024.08.09
오토스케일링(AutoScaling)  (0) 2024.08.08
데이터베이스 샤딩  (0) 2024.08.07
RedMine  (0) 2024.07.23
SVN(Subversion)  (1) 2024.07.22