노무현 대통령 배너
BLOG main image
왕미친놈의 왕미친세상입니다. 미친 소리는 써도 되지만, 근거 없는 소리는 쓰면 안 됩니다.

들어가며

배치파일에 주석을 다는 법과 화면에 글을 출력하는 법에 대해서 알아보기로 하자. 이때 이때 그래픽 화면 출력은 셸에 포함된 명령어로는 불가능하며, 외부에서 프로그램의 도움을 받아야 한다. 그러므로 배치파일에서 화면 출력이라고 하면, 일반적으로 텍스트 출력만을 가리킨다.

주석 및 기본 출력

배치파일에서는 화면에 출력할 때 ECHO 명령을 사용한다.
앞서 2009/03/02 - [배치파일&스크립트] - 스크립트란 무엇인가? 배치파일이란 무엇인가? 문서에서 만든 배치파일이 바탕화면에 있는 배치파일 폴더에 있다고 가정하고 설명하겠다.

우선 메모장을 연다. 시작 단추 >> 프로그램 >> 보조프로그램 >> 메모장

메모장에 다음과 같이 입력한다.

rem 예제 1 : 화면에 간단한 말을 출력한다.
rem 파일명 : exam01.bat
echo 예제 1.
echo 이 프로그램은 화면 출력 예제 1입니다.
echo 끝.

저장이 끝났으면 메뉴에서 [파일] >> [저장]을 선택하면 아직 이름을 주지 않았으므로 [다른 이름으로 저장]이라는 창이 뜨게 된다. 이때 파일명은 exam01.bat 이라고 하자.
명령 프롬프트를 열어서 결과를 확인하자. 어라! 실행이 되지 않는다. 이것은 명령 프롬프트가 위치한 폴더에 배치파일이 없기 때문이다. 그때는 CD 를 입력한 뒤에 한 칸 띄고 나서 <Tab>을 눌러준다. 그러면 화면에 무언가 변화가 오게 된다. 계속 [Tab]을 눌러 알맞은 폴더( "바탕 화면" )가 나오면 <Enter>를 치기 바란다.

그 뒤에 다시 CD를 누르고 한 칸 띄고 <Tab>을 눌러서 반복한다. 앞서 "배치파일" 폴더에 파일을 넣는다고 했으므로 거기까지 들어가 보자. (여기까지 한/영 변환 키를 한 번도 누르지 않고 왔다. 잘 기억해 두었다가 써먹기 바란다.)

CLS 명령을 입력하고 <Enter>를 눌러 화면을 지우자.

이제 방금 만든 배치파일을 실행해 보자. 이때도 e 또는 ex를 입력하고 <Tab>을 누르면 명령어가 바뀌게 된다. 지난번에 만든 exp.cmd 파일과 이번에 만든 exam01.bat 파일이 존재하고 있으니 그 둘만 자꾸 보여주게 된다. exam01.bat 파일을 실행하면 된다.

exam01.bat 실행 화면

exam01.bat 실행 화면

보기가 좋지 않지만 어쨌든 화면 출력을 성공하였다.
하나씩 살펴보자.
첫 줄과 둘째 줄은 REM으로 시작하므로 주석이다. 셋째 줄부터 다섯째 줄까지는 echo를 이용한 화면 출력이다. 그런데 이상한 점은 주석은 자기 자신을 보여주고는 아무런 일도 하지 않았으나, echo는 자신을 보여주고, 해당 출력을 1회씩 하였다. echo는 결국 2번씩 보여준 셈이 된다.

이때 명령 프롬프트에서는 Rem 명령은 Remark (설명하다)에 온 말이며, 아무런 역할도 하지 않는다. 그렇기 때문에 배치파일 안에 주석을 넣는 명령어로 쓰이게 된다.

명령어 반향 감추기 1

앞서 만든 exam01.bat를 고쳐보자. 메모장에서 exam01.bat를 열어서 다음과 같이 고쳐보자.

echo off
rem 예제 2 : 화면에 간단한 말을 출력한다.
rem 파일명 : exam02.bat
echo 예제 2.
echo 이 프로그램은 화면 출력 예제 2입니다.
echo 끝.

[파일] >> [다른 이름으로 저장...]을 눌러 exam02.bat 라는 이름을 주어 저장하자. 명령 프롬프트에서 exam02.bat를 실행하면 아까보다는 깨끗한 결과를 볼 수 있다.

exam02.bat 실행 화면

exam02.bat 실행 화면

이때 첫 줄이 중요하다. 아까와는 달리 echo off 라고 명령을 내렸다. echo는 화면에 글자를 출력하는 명령이 아니었나? 얼른 다음과 같이 입력하자.

echo /? <Enter>

친절한 설명이 나와 있다. echo의 기능은 (1) 메시지를 보여주거나 (2) 명령어 반향을 켜거나 끄고(기본값은 켠다), (3) echo만 일력했을 때 반향 설정값을 보여준다.

ECHO 명령어 도움말

ECHO 명령어 도움말

예제 1에서 화면이 깨끗하지 못한 이유는 바로 "명령어 반향"이라는 기능이 켜져 있었기 때문이다. 이 기능은 사용자에게 명령어가 입력되었음을 알려주는 기능이다. 이는 사용자에게 작업 내용을 알린다는 측면에서는 매우 유용하다. 그러나 반대로 배치파일에서처럼 출력 결과를 원할 때에는 지저분하게 되어 좋지 않다. 이럴 경우 명령어 반향을 끄면 좋다. 그럴 때 쓰는 명령어가 ECHO OFF 이다. 반대로 ECHO ON 이라고 하면 다시 명령어 반향이 켜지게 된다.

그러나 여전히 echo off 명령 자체는 감추지 못해서 찝찝함이 남는다.

명령어 반향 감추기 2

앞서 만든 exam02.bat를 고쳐보자. 메모장에서 exam02.bat를 열어서 다음과 같이 고쳐보자.

@echo off
rem 예제 3 : 화면에 간단한 말을 출력한다.
rem 파일명 : exam03.bat
echo 예제 3.
echo 이 프로그램은 화면 출력 예제 3입니다.
echo 끝.

[파일] >> [다른 이름으로 저장...]을 눌러 exam03.bat 라는 이름을 주어 저장하자. 명령 프롬프트에서 exam03.bat를 실행하면 아까보다 조금 더 깨끗한 결과를 볼 수 있다.

exam03.bat 실행 화면

exam03.bat 실행 화면

이번에도 첫 줄이 중요하다. 아까와는 달리 @echo off 라고 명령을 내렸다. 흠 @ (commat) 표시[각주:1]에 무언가 있다는 말인데... 이것은 해당 명령어 1개만 반향을 끄라는 말이다. 다시 말해 "echo off 자체의 명령어 반향을 꺼라"라는 의미가 된다.

요약

오늘은 ECHO를 이용해 화면에 글자를 출력하는 법과 REM으로 주석을 붙이는 법에 대해 알아 보았다. REM에 대한 설명은 없지만, "나는 모르겠다."라는 사람은 글을 남기기 바란다.

  • 오늘 배운 명령어 : ECHO , REM
  • 오늘 배운 용어 : 명령어 반향
  • 기타 :
    • CD 명령어와 [Tab]을 조합하여 폴더를 이동하는 방법
    • @을 이용하여 명령어 끄는 방법

다음 예고

화면 출력에 대해 좀 더 자세히 알아보기로 하자.

  1. @은 원래 at (앳)이라는 미국의 상업부호였다. 오늘날 콤마트(commat)라는 이름이 부여되어 있고, 한국에서는 골뱅이 또는 동그람 에이 등으로 불린다. [본문으로]

'스크립트 > 배치파일' 카테고리의 다른 글

배치파일에 매개변수 전달하기 2  (5) 2009.04.04
배치파일에 매개변수 전달하기  (0) 2009.04.01
배치파일 멈추기  (1) 2009.03.29
그밖에 출력  (2) 2009.03.26
주석 및 화면 출력  (3) 2009.03.23
배치파일에서 이용할 수 있는 명령어  (2) 2009.03.21
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

댓글을 달아주세요:: 왕미친놈 욕은 해도 되지만, 근거없는 소리는 쓰지 말아 주세요.
BBCode 사용할 수 있습니다.

  1. 진만고양이
    2010.04.01 16:41
    반향

    이게 뭔말인가 해서 찾아보니
    echo를 한글로 번역한거네용 ㅡㅡㅋ

    반향 [echo, 反響]-네이버 백과사전

    음원에서 나온 음파가 물체등에 부딪혀 반사된 후 다시 관찰자에게 들리는 현상을 말한다. 대표적인 예로 메아리를 들 수 있다. 메아리와 달리 여러 차례 다양한 면에 의해 반사... 더보기
  2. 진만고양이
    2010.04.01 16:48


    전체 echo 끄는것이



    @ 붙이면 한줄만 영향이 있네용..
    • 2010.04.01 22:33
      댓글 주소 수정/삭제
      예. 명령어 앞에 @을 붙이면 그 명령어의 반향(echo)가 꺼지게 됩니다. ^^a
      간단한 것인데, 의외로 모르는 사람이 많습니다.


카테고리

분류 전체보기 (1005)
스크립트 (22)
벌레와 팁 (126)
소프트웨어 (240)
하드웨어 (6)
이야기 (24)
말의 나무 (506)
미쳐보자 (22)
일기 (48)
아이폰 (10)

달력

«   2020/02   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29