티스토리 뷰

Shell

배치 파일을 이쁘게 꾸며보아요.

알 수 없는 사용자 2011. 3. 21. 16:32

Source : http://www.usboffice.kr/zbxe/com_info/235418

 

 

배치파일 안들어 보신분 없을 겁니다. 우선 휴대용 프로그램 만들기에도 많이 쓰기고(WinRAR SFX 와 함깨),
많이 쓰는 배치파일 이걸 전 조금 더 이쁘게 꾸며보겠습니다.
제일 먼저 @echo off 를 해야합니다. 이건 echo 를 써서 메시지를 표시할때
C:\Documents and Settings\우리집>
이걸 안보이게 해줍니다.(배치파일 속에서만 유효합니다.)
또 만일 이것을 안하고 echo 를 쓴다면 이렇게 뜹니다.
echo 메시지
C:\Documents and Settings\우리집>메시지
cmd 창에 경로 대신 원하는 제목을 넣으려면 이런 명령어를 쓰시면 됩니다.
title 제목

title/?
명령 프롬프트 창의 창 제목을 설정합니다.
TITLE [문자열]
문자열 명령 프롬프트 창의 제목을 지정합니다.

우선 좀 강력한 배치파일은 변수를 사용합니다. 근데 혹시라도 실행이 끝나고 변수가 남으면 안되겠죠. 그래서 이런 명령어를 넣습니다.
setlocal 
참고로 프로그래밍을 해보셨다면 지역적이란 말을 아실거라 믿습니다.

setlocal/?
일괄 파일에서 환경 변경의 지역화를 시작합니다. SETLOCAL이 시작된 후 일어난 환경
변경은 일괄 파일에만 유효합니다.
이전 설정으로 복구하려면 ENDLOCAL을 사용해야 합니다. 배치 스크립트 끝에
도달하면, 암시적인 ENDLOCAL이 배치 스크립트가
만든 모든 특별한 SETLOCAL 명령어를 실행합니다.
SETLOCAL
명령 확장을 사용하면 SETLOCAL는 아래와 같이 바뀝니다.
SETLOCAL 일괄 명령은 선택적인 인수를 받아들이게 되는데,
인수는 ENABLEEXTENSIONS나 DISABLEEXTENSIONS가 될 수 있습니다.
이렇게 하면 SETLOCAL 명령에 앞서 설정한 것에 관계 없이 대응되는
ENDLOCAL 명령이 나타날 때까지 명령 처리 확장을 사용하거나 사용하지 않습니다.
SETLOCAL 명령은 인수가 주어지면 ERRORLEVEL값을 설정합니다.
두개의 올바른 인수 중 하나가 주어지고 다른 하나가 주어지지 않으면 0이
됩니다. 이것으로 아래와 같은 기법을 사용하여 일괄 스크립트에서 확장을
사용 가능한지를 결정할 수 있습니다.
VERIFY OTHER 2>nul
SETLOCAL ENABLEEXTENSIONS
IF ERRORLEVEL 1 echo 확장을 사용할 수 없습니다.
이것은 CMD.EXE, SETLOCAL의 이전 버전에ERRORLEVEL 값이
설정되지 않았기 때문에 작동합니다. 잘못된 인수와 함께 VERIFY 명령을
사용하면 ERRORLEVEL 값이 0이 아닌 값으로 초기화됩니다.

자 다음은 시커먼 색 대신 좀더 이쁜색으로 배경화면을 바꿉시다. 또 글자색도 바꿀 수 있습니다.
그래도 배치파일에서만 유효하니 걱정마세요.
(아무리 생각해도 명령행 도움말이 너무 잘 되어 있는 특히 친절하게 한글로)

color/?
콘솔의 기본 문자색과 배경색을 설정합니다.
COLOR [attr]
attr 콘솔로 출력되는 색 속성을 지정합니다.
색 속성은 두 자리의 16진수로 지정됩니다. 즉, 첫째 자리는 배경색에 해당되고
둘째 자리는 문자색에 해당됩니다. 각 자리 수는 다음 값이 될 수 있습니다.
0 = 검정색 8 = 회색
1 = 파랑색 9 = 연한 파랑색
2 = 초록색 A = 연한 초록색
3 = 옥색 B = 연한 옥색
4 = 빨강색 C = 연한 빨강색
5 = 자주색 D = 연한 자주색
6 = 노랑색 E = 연한 노랑색
7 = 흰색 F = 밝은 흰색
인수가 주어지지 않으면 이 명령은 CMD.EXE가 시작할 때 사용한
색으로 복원됩니다. 값은 현재 콘솔 창에서 가져 오거나, /T 명령 중
스위치나 DefaultColor 레지스트리 값으로부터 가져 옵니다.
COLOR 명령은 문자색과 배경색을 같게 지정하여 실행하려고 할 경우
ERRORLEVEL을 1로 설정합니다.
예를 들면 "COLOR fc"는 밝은 흰색 위에 연한 빨강색의 문자색을 나타냅니다.

그리고 이 모든 작업후에 창을 깨끗하게 지우라고 이런 명령어를 줍시다.
cls
pause > nul
pause는 아실겁니다. 잠시 중지하고 아무키 입력이 있을때 까지 기다리죠. 그렇다면 > nul 는 뭘까요. 참깐 nul 어디서 본것 같죠. 이건 바로 없음을 뜻하는 기호입니다. 즉 이 명령어를 입력하면 아무 말도 없이 기다립니다. 즉
계속하려면 아무 키나 클릭하십시오 . . . 가 안뜹니다.
혹시 자신이 원하는 메시지를 표시하고 싶다면
echo 메시지
pause > nul
이렇게 하시면 됩니다.
그럼 완성본을 볼까요?
@echo off
title 예제
setlocal
color 2f
cls
이걸 응용한 예제를 올려 드리겠습니다.

'Shell' 카테고리의 다른 글

Batch파일 정복  (0) 2011.03.21
BAT 배치파일에서 인수받는법, 옵션 파라미터 받기; Parameter  (0) 2011.03.21