강좌 / 팁

윈 도 우 gooddew님 배치파일 강좌

2022.03.16 02:41

슈머슈마 조회:2523 추천:19

예전에 gooddew님이 올리신 강좌를 다시 올려봅니다.

 

배치파일 강좌 도움말: batch_파일_정복_전체.hta

batch_파일_정복

_1강-batch_파일_정복 1_
 
batch 파일 정복
 
1.  "@echo off"를 일반적으로 사용하기
화면에 명령어들이 표시되지 않게 echo off 하고, 그 라인도  화면에 표시 되지 않게 하기 위해서 다음과 같이 하면 된다.
 @echo off
이 것은 MsDos 3.30 이후 버전에서만 작동한다.  이것을  일반적으로 사용하게 하기 위해서 3.30이상의 MsDos를 사용한다면  autoexec.bat 안에 다음과 같이 적어 놓는다.
 set _echo=@
그리고 배치파일에서 다음과 같이 사용한다면 어느 버전의 MsDos버전에서도 작동한다.
 %_echo%echo off
 
2.  모든 파일을 지우기
가장 흔하게 질문되는 것(FAQ)중의 하나는 del *.*  을  사용껦 때,"Are you sure (Y/N)?" 라는 확인을 어떻게 하면 나타나지 않게 하는것이다. 다음과 같이 사용한다.
 echo y| del *.*
화면에 나타나는 메세지도 보이지 않게 하려면 다음과 같이 한다.
 echo y| del *.* > nul
이러한 확인 절차를 표시하지 않게 하는 것은 토론의 여지가 많지만,위와 같이 사용할 수 있다.
(주: 사실 del /Q *.* 와 같이 /Q(Quiet) 옵션으로도 가능하지만 이쪽은 필터를 사용하여 입력을 자동화 하는것에 촛점을 맞춘듯 싶다. 3.30 버전에선 안될 수도 있었겠죠)
 
3.  다중 반복
배치파일에서 다중 루프(반복)를 사용하는 것이 가능하다. 다음의 두배치파일을 생각해 보자. 그리고 test.bat을 불러 실행시켜 보자.
  echo off
  rem TEST.BAT
  for %%f in (a b c d e f) do %comspec% /c test2 %%f
  echo off
  rem TEST2.BAT
  for %%g in (1 2 3) do echo %1%%g
아니면 한줄로 다음과 같이 써서 사용할 수도 있다.
  for %%f in(a b c d e f) do %comspec% /c for %%g in (1 2 3)  do echo %%f%%g
 이 두번째 방법의 단점은 echo가  화면에 표시된다는 것이다.
 
4.  디렉토리가 존재하는지 확인하는 방법
디렉토리가 있는지 확인하는 것은 가끔 매우 쓸모있는 일이다.  %1의 디렉토리가 없다면 다음 확인은 참이 될것이다.
 if not exist %1nul if not exiat %1nul echo Directory  %1  does not exist
 
5.  프로그램을 현디렉토리나 경로에서 사용할 수 있는지 확인하기
배치 프로그램에서 프로그램을 불러서 사용할때, 그 파일에 대한  경로를 써주지 않았을 경우, 그 프로그램이 현재의 디렉토리나  경로에서 사용가능한지 확인할 때 도움이 될 것이다.
  set _found=
  if exist %1 set _found=yes
  for %%d in (%path%) do if exist %%d%1 set _found=yes
  for %%d in (%path%) do if exist %%d%1 set _found=yes
  if "%_found%"=="yes" goto _continue
  echo %1 is not at path or the current directory
  goto _out
  :_continue
  echo %1 found at path or in the current directory
  :_out
  
6.  배치파일에서 서브루틴이나 재귀적방법을 사용하기
배치파일 안에서 서브루틴을 사용하는 것은 가능하다. 방법은 서브루틴이 실행된  뒤에  돌아가야할  곳을  가르키는  환경변수(예를들면_return)를 설정하는 것이다. 이런 예는 UNPACK.BAT 이나 BOOT.BAT의:_common 과 :_subru 부분에서 찾아 볼 수 있다.
마찬가지로 재귀적인 사용이 가능하다. ("재귀적인  방법"의  의미는 한  배치파일이  자기  자신을  불러  사용하는  것이다.)  이  예는 SAFEDEL.BAT에서 아래의 행을 따라 찾아 보면 된다.
 for %%f in (%1) do call safedel %%f recurse
배치파일의 0번째 인수(%0)는 배치파일 자신을 나타내므로,  safedel은 %0으로 대치 되어 사용할 수도 있다.
 
7.  매개 인수(parameter)를 대문자로 바꾸기.
다음은 배치파일에 사용한 인수 %1 를 대문자로 바꾸어 주는  예제이다. 이는 MsDos는 path를 대문자로 바꾼다는 점을 이용한 것이다. 결과는 upcase_에 저장될 것이고, 원래의 경로가 다시 저장될 것이다.
  set tmp_=%path%
  path=%1
  set upcase_=%path%
  path=%tmp_%
  
8.  새로운 디렉토리를 경로에 붙이기
자주 필요한 이 기술은 매우 간단하다. 예를 들어 %1를 경로에  덧붙이려면
 path=%path%;%1
이라고 하면된다.
이 기술은 배치파일 안에서만 사용할 수 있다. 배치파일 안에서만 환경변수(%path%)를 사용할 수 있기 때문이다. 존재하지 않는 디렉토리를 덧붙이려한다거나 중복해서 경로를 덧붙이는 것을 방지하는 ADDPATH.BAT이라는 배치파일이 있다.
 
9.  두 파일을 비교하기
배치파일에서 두 파일이 같은지 아닌지 확인해 볼 수 있다. 이  기술은 MsDos의 외부 명령어인 fc.exe와 find.exe를 사용한다. (외부  명령어라는 뜻은 MsDos와 같이 있는 프로그램들이다. 대부분의 외부 명
령어용 프로그램들은 c:dos 에 위치한다.)
  fc %1 %2 > tmp$$$
  type tmp$$$ | find  /i  "fc:  no  differences  encountered"  >diffe$$$
  if exist notsame$ del notsame$$$
  copy diffe$$$ notsame$ > nul
  if not exist notsame$ echo Files %1 and %2 are different
  if exist notsame$ echo Files %1 and %2 are identical
  if exist tmp$$$ del tmp$$$
  if exist notsame$ del notsame$
  if exist diffe$$$ del diffe$$$
좀더 생각하면 이 기술은 다른 목적에도 사용할 수 있다. 이는  파일안에 주어진 문자열이 있는지 확인 하는데 바탕을 두고 있기  때문이다.
 
10.  빈줄을 쓰기
이는 간단하지만 종종 필요하고 유용한 기술이다. echo 바로  다음에점(.)을 찍으면 빈줄을 표시할 수 있다.
  echo.
  
11.  pause를 이용해 메세지를 표시하기
메세지를 손쉽게 나타나게 할 수 있다. 메세지를 echo한 다음  pause 를 사용하는데, pause의 메세지를 nul로 보내면 된다.
 echo Break to quit, any other key to remove the tmp directory
 pause > nul
 
12. for를 이용한 다양한 rename 기술
이 기술이 기본적이고 사소하지만, 이를 생각해 내기란 쉽지 않을 것이다. for 문은 파일의 이름을 바꾸는데 특별히 유용하다.  예를  들면, 내가 다음의 파일들을 가지고 있을 때, (터보  파스칼  TP  4.0,
5.0, 5.5, 6.0) 내가 버전 29를 30으로 바꾸기 원한다고 할때,
  tspa2940.zip
  tspa2950.zip
  tspa2955.zip
  tspa2960.zip
다음은 손쉽게 그런 일을 해준다.
 for %f in (40 50 55 60) do re tspa29%f.zip tspa30%f.zip
물론 파일이름 바꾸는 일 말고도 이 기술로 다양한 일을 할 수 있다.
하나의 예는 다음과 같다.
  for %d in (a b) do format %d:
  
13.  와일드카드를 확인하기
이 예제는 인수 %1이 와일드 카드를 사용하고 있는지 아닌지  확인한다.
  @echo off
  for %%f in (%1) do if "%%f"=="%1" goto _nowilds
  echo Parameter %1 contains wildcards (or is missing)
  :_nowilds
  
14.  배치 작업을 중간에 그만두지 못하게 하기
ctty 명령어를 사용해서 입력장치나 출력장치를 새로 설정하여  배치파일을 중단시키는 것을 방지할 수 있다. 여기의 예제는  패스워드로 e를 넣어야 하는 간단한 배치파일이다.
ctty가  nul로  돌려진  동안<,>의 리디렉션이 필요한 것을 눈여겨 보라. ask라는 배치파일을  돕
기 위한 프로그램은 같이 포함되어 있다. ( MsDos의 choice와 비슷하다. 단, 에러 레벨을 입력한 문자의 아스키 값으로 돌리는 것만 틀리다.)
  @echo off
  ctty nul
  echo Now you cannot break the batch with ^C or ^Break > con
  :_ask
  echo Use e to break > con
  ask /b /d < con
  if errorlevel==101 if not errorlevel==102 goto _out
  goto _ask
  :_out
  ctty con
  echo Back to normal. Now you can break the batch  with  ^C  or
^Break.
이 배치파일이 작동되고 있는 동안에는 alt-crtl-del로  다시 부팅할수도 없다. 이 같은 일을 하는 noboot.exe라는 램상주 프로그램도 있다.
 
15.  autoexec.bat를 중지하고 건너뛰는 것을 방지하기
브레이크를 눌러 autoexec.bat를 건너 뛰어 지나치지 않게 하기 위해서 다음과 같이 config.sys에 쓰면 된다.
  shell=c:command.com /p nul
이렇게 하기 전에 만일의 경우를 대비해서 플로피 디스켓으로 부팅할준비를  해둔다. autoexec.bat 맨 뒷줄에 'ctty con'이라고 덧  붙여야 된다. 그렇게 하지 않으면 키보드가 말을 듣지 않을 것이고, 준비한 플로피 디스켓으로 부팅해야 할 것이다 :-).
 
16.  확장자를 인식하기
단지 확장자를 확인하려던가, 주어진 파일의 이름에서 확장자를 환경변수로 저장하려고 할때, 이 것은 매우 유용하다. 어떻게 하는지  여기에 있다. 이 배치파일은 PC-Magazine July 1992, Vol 11, No.  13,
page 528에 나온  정보를 이용한 것이다. for 루프에서  슬레시(/)로 시작하는 인수는 두 부분으로 나누어지는데, 처음 부분은 인수의  첫문자이고 다른 부분은 나머지 문자열이다.
이 해결방법에서 하나의 문제점은 .* 이라던가 .???  이란  확장자를 인식하지 못하는 것이다. 그러나 "와일드카드를 확인하기"를  이용해서 확인하면 될 것이다. 이러한 기술을 이용한 것중에  UNPACK.BAT라
는 배치파일이 있다.
     @echo off
     set exten_=%1
     :_next
     set prev_=%exten_%
     for %%f in (/%exten_%) do set exten_=%%f
     if ".%exten_%"=="%prev_%" goto _extfound
     if not "%exten_%"=="%prev_%" goto _next
     goto _noext
     :_extfound
     echo The filename %1 has an extension %exten_%
     goto _out
     :_noext
     echo The filename %1 has no extension
     :_out
     set exten_=
     set prev_=
     
17.  % 문자 인용부호
%1은 배치파일에 주어진 첫번째 인수를 가르킨다. 이처럼 'echo  %1'이라고 하면 첫번째 인수를 표시해 준다. 대신에 %1라는 문자를 표시하고 싶은 경우 어떻게 해야하는가?  % 문자는 인용부호처럼  행동한다. 그래서 %%1이라고 쓴 경우 실제로는 "%1"이라고  화면에  표시된다. 아래의 간단한 연습을 실행해보라.
  @echo off
  if "%1"=="" goto _out
  echo %1
  echo %%1
  :_out
이 기능을 이용한 것은 "배치의 보조 배치파일을 없애기"를  보아라.
좋은 예로는 DELPATH.BAT가 있다.
 
18.  배치의 보조 배치파일을 없애기
많은 배치 프로그램이 call을 사용해서 보조 배치파일을  불러다  쓴다. 많은 경우 이런 일을 재귀적인 사용을 통해 자기 자신을  불러다씀으로써  보조 파일을 사용하는 것을 줄일 수 있다. 보조코드는  배치파일 자기자신에 넣어 놓는다. 이러한 기술은 와일드 카드를  받아들이는 TYPE 같은 SHOW.BAT 에서 가장 잘 나타나 있다. 일반적으로는 개개의 파일을 type하기 위해서  보조파일이  필요하다.  다른  예는
SAFEDEL.BAT에서 찾아볼수있다.
이와 같은 일을 하기 위한 다른 기술이 있다. 원래의 배치파일이  보조 배치파일을 만든 다음 그것을 불러 사용하는 것이다. 이런 것으로는 DELPATH.BAT의 예를 들 수 있다. 여기에는  사용되는  드라이브를
보여주는 간단한 예가 있다. (c 부터 t 까지 가능하다. 여기선 더 쓰면 줄이 넘어가니까!)
 @echo off
 echo @echo off> tmp$$$.bat
 echo if exist %%1:nul echo Drive %%1: is present>> tmp$$$.bat
 for %%d in (c d e f g h i j k l m n o p q r s t) do call tmp$$$
%%d
 del tmp$$$.bat
디스크의 볼륨  레이블을  찾아내는  창의적인  기교가  PC-Magazine August 1992, Vol. 11, No. 14, p. 527에 실렸다. 여기는 같은  기술을 사용하는  예가 있다. 환경변수 getdir_에 현재의 디렉토리를  저장한다. 이 기술은 PUSHDIRE.BAT에 사용되고 있다.
  @echo off
  echo @echo off> director.bat
  echo set getdir_=%%2>> director.bat
  echo echo %%getdir_%%>> director.bat
  dir | find "Directory"> go.bat
  call go
  if exist director.bat del director.bat
  if exist go.bat del go.bat
  
19.  subst 명령어를 경로에 사용하기
어떤 디렉토리를 읽기 쉽게 하기 위해서 간단한  배치파일을  사용한다. 만약 subst 가 이미 설정되어서 생길 수 있는 에러를  방지한다. 그리고 마지막으로 현재 대치된 디렉토리의 현황을 보여준다.
  @echo off
  if exist m:nul echo The substitution has already been made
  if not exist m:nul subst m: c:math
  if not exist s:nul subst s: c:support
  subst
  
20.  일주일에 한번 실행하기. (요일을 확인하기)
요일을  환경변수에  넣는  것은  어려운  기술이다.  완전한   예는 WEEKLY.BAT에서 찾아볼수 있다. 이 기술의 핵심은 아래에 나와  있는데, 요일을 weekday_라는 환경변수에 저장하는 것이다. 일반 도스 프로그램 외에 아무런 보조 프로그램이 필요없다.
  @echo off
  echo.| date | find "Current" > tmp$$$.bat
  echo set weekday_=%%3> current.bat
  call tmp$$$
  echo %weekday_%
  if "%weekday_%"=="Fri" echo Thank God it's Friday
  if exist tmp$$$.bat del tmp$$$.bat
  if exist current.bat del current.bat
  set weekday_=
사실, 위에서 %%3 대신에 %%4를 사용하면 오늘의 날짜를  확인할  수 있다.
 
21.  파일이름에 경로가 포함되었는지 확인하기
우선 먼저 "확장자를 인식하기"를 보면 같은 아이디어인 것을 알  수 있다. 파일이름이 단순히 go.exe 로 이루어 졌는지,  아니면  경로를 포함해서 r:progsgo.exe와  같이  이루어  졌는지  확인하는  것은 r:progs*.exe와 같이 확장자를 사용했다면 매우 복잡한 일이다. 여기서 어떻게 되는지 설명하였다. 이를 완전히 이해했다면 확실히  배치 파일들에 대해서 이해하기 시작했다고 말할 수 있을 것이다.
  @echo off
  echo @echo off> tmp$$$.bat
  echo set rest_=%%1>> tmp$$$.bat
  echo :_next>> tmp$$$.bat
  echo set prev_=%%rest_%%>> tmp$$$.bat
  echo for %%%%g in (/%%rest_%%) do set rest_=%%%%g>> tmp$$$.bat
  echo if ":%%rest_%%"=="%%prev_%%" goto _found>> tmp$$$.bat
  echo if "%%rest_%%"=="%%prev_%%" goto _found>> tmp$$$.bat
  echo if not "%%rest_%%"=="%%prev_%%" goto _next>> tmp$$$.bat
  echo goto _nopath>> tmp$$$.bat
  echo :_found>> tmp$$              at
  echo set haspath_=yes>> tmp$$$.bat
  echo goto _out>> tmp$$$.bat
  echo :_nopath>> tmp$$$.bat
  echo set haspath_=no>> tmp$$$.bat
  echo :_out>> tmp$$$.bat
  echo set rest_=>> tmp$$$.bat
  echo set prev_=>> tmp$$$.bat
  for %%f in (%1) do call tmp$$$ %%f
  if "%haspath_%"=="yes" echo Filename %1 includes a path
  if "%haspath_%"=="no" echo Filename %1 does not include a path
  rem if exist tmp$$$.bat del tmp$$$.bat
  set haspath_=
  
22.  엔터키를 누르지 않고 시간을 보기
현재의 시간을 보는 간단한 기술은 다음과 같다.
  echo.| time | find /v "new"
시간을 환경변수로 저장하는 방법은 LASTBOOT.BAT을 보아라.
 
23. 에러레벨 값을 확인하는 다른 방법
많은 프로그램과 몇개의 도스명령어들( diskcomp, format,  xcopy)은끝날 때 에러 레벨을 발생시킨다. 에러레벨의 누적적인 성질  때문에 에러 레벨을 확인하는 것은 다소 복잡해진다. 그래서 만약  에러레벨이 정확히 2인지 확인하기 위해서는 다음과 같이 한다.
 if errorlevel==2 if not errorlevel==3 echo Errorlevel 2
for 명령어를 사용하는 다른 방법으로 다음을 들수 있다.
 for %%e in (0 1 2  3  4  5  6  7)  do  if  errorlevel==%%e  set
_errlev=%%e
 if "%_errlev%"=="2" echo Errorlevel 2
좀 더 일반적으로 다음과 같이 할 수 있다.
 for %%e in (0 1 2  3  4  5  6  7)  do  if  errorlevel==%%e  set
_errlev=%%e
 if "%_errlev%"=="2" echo Errorlevel %_errlev%
복잡한 배치파일에서 편리한 방법은 goto를 사용하는 것이다.
  for %%e in (0 1 2) do if errorlevel==%%e goto _label%%e
  goto _out
  :_label0
  echo Errorlevel 0
  :_label1
  echo Errorlevel 1
  :_label2
  echo Errorlevel 2
  :_out
이 기술을 실제로 사용하는 예는 BOOT.BAT에서 찾아볼수 있다.
 
24.  배치파일의 출력을 리디렉션(redirection)하기
배치파일 안에서의 출력은 손 쉽게 재 방향전환(redirecion)할 수 있다. 다음과 같은 example.bat 이라는 배치파일을 생각해보자.
  @echo This is a redirection test> test
"example"를 실행시키면 아래의 문장을 담은 "test"라는 파일을 생성 할 것이다.
  This is a redirection test
이 줄은 eoln(end of line: ascii 13 + 10)을 줄 끝에  포함하고  있다. 리디렉션 기호 '>' 앞에 아무런 공백도 주지 않는  것이  현명할때가 있다.
배치파일이 만드는 출력을 다시 재 방향전환(redirection)하는  것은 다소 복잡하다. 다음과 같은 내용을 지닌 example2.bat을 생각해  보자.
  @echo This is another redirection test
실행하면,
  example2 > test
출력은 화면에 나오고, 빈 test라는 파일이 생성될  것이다.  출력을 재 방향 전환 시키기 위해서는 다음과 같이 command.com 명령어 해석기를 통해서 배치파일을 실행해야 한다.( command.com은  현디렉토리나 경로에 있어야 한다.)
  command /c example2 > test
이와 같이 하면 내용이 "test"라는 파일에 담길 것이다.
 
25.  환경저장 공간이 충분한지 확인하기
만약 배치파일이 환경저장 변수를 사용하면, 환경저장 공간이 부족할경우가 있다. 만약 "Out of environment space"라는 메세지를 받는다
면 잘 알려진 방법을 통해서 다음과 같이 config.sys 의 shell을  설정해서 환경저장 공간을 늘릴 수 있다.
  shell=c:bincommand.com c:bin /e:1024 /p
이 보다 덜 알려진 기술로는 환경저장 공간이 모자라기 전에 미리 확인해 볼수 있다. 아래의 예는 32바이트의 환경이 남아 있는지 확인한다.
 @echo off
 set test_=12345678901234567890123456789012
 if "%test_%"=="12345678901234567890123456789012" goto _yes
 echo Insufficient environment space
 goto _out
 :_yes
 echo Sufficient environment space
 set test_=
 rem Whatever you wish to do
 :_out
 
26.  드라이브를 사용 못하게 하는 간단한 방법
임시로 드라이브를 사용하지 못하게 하려면, subst명령어를 사용하면 된다. 예는 아래와 같다.
  @echo off
  md c:none
  subst d: c:none
다시 사용하게 하려면,
  @echo off
  subst d: /d
  rd c:none
  
27. 프린터에 escape 명령어를 보내기
여기 정말  사소한  기술이  있다.  명령행에서  곧바로  프린터에게 escape sequence를 보낼 수 없다. 그러나 다음과 같은 배치파일을 이용하면 간단하다.
  @echo ESC%1> prn
ESC는 진짜 escape문자로 에디터로 쓰여져야 된다. 이 방법의 한가지 결점은 라인피드를 보내는 것이다.
 
28.  무작위 문자열을 만든는 방법
UseNet news에서 무작위 문자열을 만드는 방법을 물어보는 사람이 있었다.  대답은 다음과 같다. 이를 확장해서 공부해보기 바란다.
  @echo off
  echo 10 randomize(val(mid$(time$,7,2))) > tmp.bas
  echo 20 open "tmp2.bat" for output as #1 >> tmp.bas
  echo 30 x$ = mid$(str$(int(rnd*10000)),2) >> tmp.bas
  echo 40 print #1,"@set ramdom_=";x$ >> tmp.bas
  echo 50 close #2 >> tmp.bas
  echo 60 system >> tmp.bas
  gwbasic tmp.bas
  call tmp2
  del tmp.bas
  del tmp2.bat
  set
  
29.  문자열의 길이를 알아내기
문자열의 길이를 찾아내는 일은 PC Magazine January 26, 1993 issue 에 실렸다. 여기서 제안하는 방법은 PC 메거진의 방법과  근본적으로 같지만, 더 일반적이다.
  @echo off
  set test_=Testing the lenght of a string
  echo %test_% > len$&$&$
  dir len$&$&$ | find "LEN$&$&$" > go$$$.bat
  echo @echo off> len$&$&$.bat
  echo set length_=%%                 len$&$&$.bat
  call go$$$
  echo The lenght is %length_% bytes
  del len$&$&$
  del len$&$&$.bat
  del go$$$.bat
  
30.  MsDos의 버전을 환경변수로 저장하기
ADJCURS.BAT을 보면 알겠지만, 배치파일로만 버전을 알아낼  수있다.
여기에 다른 방법이 있다.
  @echo off
  ver > go$$$.bat
  echo @echo off> ms-dos.bat
  echo set version_=%%2>> ms-dos.bat
  call go$$$
  echo Your MsDos version is %version_%
  del go$$$.bat
  del ms-dos.bat
 
 
 
_2강-batch_파일_정복 2_
 
▶ 배치파일이란 ?
 
컴퓨터의 동작 상태를 살펴 보면 항상 사용자와의 상호작용에 의하여 작업이이루어진다는것을 알 수 있습니다. 도스라는 운영체제도 사용자가 명령을 입력하면 그 명령에 대해 도스가 분석하여 사용자가 원하는 실행 결과를 제공합니다.
따라서 사용자는 항상 도스 프롬프트 상에서 일일이 키보드를 이용한 타이핑으로 명령을 내려야 하고, 하나의 명령이 내려지면 완료될 때까지 다음 명령을 내릴수가 없습니다. 작업 과정이 얼마되지 않는다면 큰 상관이 없으나 그 과정이 매우 길고 복잡하다면 사용자는 지루함을 느끼게 됩니다. 또한 비록 짧은 작업과정이라도 컴퓨터를 켤때마다 매번 똑같은 과정을 일일이 지시하는 것도 귀찮을 것입니다.
이러한 경우 배치 파일은 가장 확실한 해결책입니다.
 
배치파일의 기능은 순차적이고 반복된 동일한 작업 과정을 몇개의 혹은 수십, 수백 개의 연관된 명령어를 하나의 파일로 집약하여 그 하나의 파일(배치파일)만 실행함으로써 원하는 작업 과정을 수행하는것입니다.배치파일에 붙는 확장자는 .bat(batch 의 약어) 입니다.도스에서 실행이 가능하기 때문에 .com, .exe 확장자가 붙는 외부 명령어와 함께 실행 가능한 파일로 분류됩니다.차이가 있다면 .com, .exe 명령어는 컴퓨터만 해석 가능한 기계어 코드로 구성되어 있는반면, 배치 파일은 사람이 알아볼수 있는 일반 텍스트로 이루어져있다는 것입니다.
 
그래서 사용자들은 문서작성에 이용하는 워드프로세서나 텍스트에디터 등을 이용해 배치 파일을 작성할 수 있습니다. 그러나 워드프로세서는 덩치가 크고 원래 목적이 편집과 출력을 위해 만들어진 것이므로 단순한 배치 파일을 작성하는 데는 권하고 싶지 않습니다.
 
저장할때도 워드프로세서 고유의 포맷(예" .hwp 확장자를 가지는 아래아한글 데이터 파일)으로 저장하면 인식이 되지 않으므로 아스키 파일로 저장해야 합니다.가장 편리한 방법은 일반 문서 에디터( 도스의 Edit, Q에디터,U에디터 등)를 이용하거나 도스의 'Copy Con' 명령으로 배치 파일을 만드는 것입니다.다음과 같이 'Copy con 파일명' 형식으로 입력하고 엔터를 누르면 도스 프롬프트 상태에서 편집할 수 있는 상태가 됩니다.
-------------------------------
C:Bats> copy con Timedate.bat
cls
time
date
^Z
 
1 File(s) copied
-------------------------------
 
여기서 쓰고 싶은 대로 적기만 하면 됩니다.제일 마지막행의 ^Z 는 파일의 제일 마지막 부분이라는 것을 도스에게 알려주는 코드로 < Ctrl + Z > 키 또는 F6 키를 누르면 됩니다. 그리고 엔터키를 한번더 누르면 '1 File(s) copied' 라는 메세지가 출력되는데, 이는 방금 ' copy con 파일명 ' 으로 작성된 문서파일이 성공적으로 만들어졌다는 뜻입니다.위의 문서파일은 확장자가 .BAT 로 붙었기 때문에 실행가능한 외부 명령어가 되는데, 배치파일은 명령이 기록되어 있는 순서대로 실행되기 때문에 timedate.bat 를 실행시키면 먼저 화면을 지우고 난뒤 시스템의 시간과 날짜를 설정합니다.간단한 배치파일은 'copy con 파일명' 으로 작성하는 것이 다른 프로그램의 도움없이 쉽고 빠르게 처리할 수 있습니다. 하지만 배치파일이 조금 길거나 작성중에 수시로 편집할 일이 생기는 경우에는 불가능합니다. 'copy con 파일명' 으로 파일을 작성하면 행으로 다시돌아갈 수 없을 ?아니라 수정이 불가능하기 때문입니다. 그러므로 배치파일을 만들 필요가 있을때는 문서 에디터를 이용하는 것이 좋습니다.
 
▶ 배치파일 작성 명령어 9인방
 
배치 파일은 파일 안에 기록되어 있는 명령의 순서대로 실행됩니다.가장 대표적인 것이 부팅에 이용되며, 컴퓨터의 루트 디렉토리에 위치하고 있는 Autoexec.bat 파일입니다. 그런데 만약 배치 파일의 실행의 순서를 순차적이 아닌멀티부팅용 Autoexec.bat 처럼 사용자 마음대로 정하고 싶다면 배치파일에 제공되는배치명령어의 용도를 알고 있어야 합니다.
 
 
1. CALL
현재 실행중인 배치 파일을 종료하지 않고 필요한 다른 배치파일을 호출하여 실행한 다음 원래의 배치파일로 다시 돌아오려고 할 때 사용됩니다.
 
◇ 사용법 : Call [drive:][경로]<배치파일명>[.BAT]
 
◇ 예 : Call c:batssample.bat
 
어떤 배치 파일을 실행하는 도중에 경로 C:bats 에 있는 sample.bat 파일을 실행한 다음 다시 원래의 배치파일로 돌아옵니다.
 
 
2. CHOICE
배치 프로그램 내에서 사용자의 선택을 묻기 위해 사용됩니다. 배치 파일 제작자가 설정한 물음을 출력하면서 지정된 키 입력을 기다립니다. 이 명령은 배치파일 내에서만 사용 가능합니다.
 
◇ 사용법 :choice [/C[:]문자열][/N][/S][/T[:]기본키,대기시간][메세지]
 
◇ 옵션
- /C[:]문자열 : 사용자가 선택할 수 있는 키목록을 [] 괄호 내에 ', ' 로 구분하여 출력하고 /C 스위치를 사용하지 않으면 기본적으로 YN이 사용됩니다.
- /N : 프롬프트를 출력하지 않도록 합니다.
- /S : 사용자의 입력에서 소문자, 대문자를 구분하도록 합니다.
- /T[:]기본키, 대기시간 : 기본키를 지정한 후 대기시간 동안 사용자의 키 입력이 없으면 자동적으로 기본키가 입력된 것으로 간주하고 진행됩니다. 지정 가능한 대기시간은 초단위이며 0에서 99 사이의 값입니다.
 
- 메세지 : 화면에 출력될 메세지를 지정합니다.
 
◇ 예 : choice /c:abCD /s /t : C, 5 다음중에서 하나를 선택하십시오 a, b, C, D
◇ 설명 : 입력 가능한 키를 a,b,C,D로 한정하며 사용자로부터 입력되는 영문자의 대,소문자를 구분하는데, 만약 5초 내에 사용자로부터 키 입력이 없다면 C 가 입력된 것으로 간주합니다. 그리고 화면에는
'다음중에서 하나를 선택하십시오 a, b, C, D[a,b,C,D]? '
라는 메세지가 출력됩니다.
 
 
3. ECHO
 
배치파일 실행중에 명령어를 화면에 표시할 것인지의 여부를 설정하며, 그 상태를 표시합니다. 한편 ECHO 명령 뒤에 오는 메세지는 화면에 나타납니다.
 
◇ 사용법 : echo [on/off] [문자열]
 
◇ 옵션
- on : 배치 파일 실행중에 그 배치 파일 내의 명령어를 화면에 표시합니다.
- off : 배치 파일 실행중에 명령어를 화면에 출력하지 않도록 합니다.
- 문자열 : 화면에 출력하고 싶은 메세지를 적어줍니다.
- 없음 : 현재 ECHO 설정 상태를 표시합니다.
 
◇ 예 :
echo off
☞ 현재 실행중인 배치 파일 내의 명령어를 화면에 나타나지 않도록 함.
echo
echo 안녕하세요?~
☞ 현재 echo 설정상태를 표시하며 안녕하세요?~ 라는 문구를 화면에 출력합니다.
 
 
4. FOR
지정된 집합 중의 각각의 요소에 대하여 명령으로 설정한 처리를 반복 실행합니다.
 
◇ 사용법
For %%<변수> IN (<집합>) DO <명령> [<옵션>] ☞ 배치파일용.
For %<변수> IN (<집합>) DO <명령> <옵션>] ☞ 순차처리용.
 
◇ 옵션
- %%<변수>, &<변수> : 변수로 사용되는 것은 임의의 영문자로 1자만 허용됩니다. 주의할 점은 배치파일에서 사용할 경우는 반드시 %%처럼 두개를 연달아 사용해야 하며, 일반 도스 프롬프트에서 사용할 때는 % 하나만 사용합니다.
 
- <집합> : %%<변수>에 대입하고 싶은 값을, 또는 스페이스로 구분하여 대입하고 싶은 순서대로 나열합니다.
- <명령> : %%<변수>에 대입되어 있는 값에대해 반복적으로 실행하고 싶은 명령을 지정합니다.
- <옵션> : 지정한 명령의 옵션이나 FOR 명령에서 지정한 옵션을 설정합니다.
 
◇ 예
for %%f in (bak tmp $$$) do del *.%%f /p ☞ 배치파일의 경우
for %d in (read,wh,file) do hlist %d*.* ☞ 도스 프롬프트에서 실행시
 
◇ 설명 : 첫 번째는 bak, tmp, $$$ 를 순서대로 %%f 환경 변수에 대입하여 차례대로
DEL *.bak /p, DEL *.tmp /p, DEL *.$$$ .p 를 실행한 것과 동일한 결과를 얻게됨.
 
두번째는 READ,WH,FILE 를 순서대로 %d 환경변수에 대입하여 차례대로
HLIST READ*.*, HLIS TWH *.* , HLIST FILE *.* 를 실행한 것과 동일한 결과를 얻게 됩니다.
 
 
5. GOTO
배치 처리의 흐름을 <레이블>에서 정의되어 있는 위치로 옮깁니다.
 
◇ 사용법 :Goto <레이블>
 
◇ 예 :
goto loop
:loop
각종 처리할 내용
 
◇ 설명 : 레이블 loop 로 배치 처리의 제어권을 이동시켜 loop 항목에 지정된 각종 처리할 내용을 실행시킵니다.
 
◇ 참고 : 배치 파일에 레이블 표시는 레이블명 앞에 콜론(:) 을 붙여주며 줄을
바꿔 맨 앞에 지정해 주어야 합니다.
 
 
6. IF
지정한 조건의 판단 결과에 따라서 배치 처리를 진행합니다.
 
◇ 사용법 : If [NOT] <조건> <명령>
 
◇ 옵션
- NOT : 지정한 조건의 반대 조건일 때만 실행합니다.
- 조건
- ERRORLEVEL <수치> : 바로 전에 실행한 명령(프로그램)의 종료 코드가 <수치> 이상일 때에는 참이 되고 <명령> 이 실행됨.
- <문자열1> == <문자열2> : <문자열1> 과 <문자열2> 가 같을 때에만 참이되고 <명령>이 실행됩니다. 주의할 점은 문자열의 대,소문자가 구별되며, 문자열중에 구분기호(콤마,스페이스,세미콜론,등호,탭)가 포함되어 있으면 않됩니다.
- EXIST <파일명> : <파일명>으로 지정한 파일(경로포함)이 존재할 때에만 참이 되고 <명령>이 실행됩니다. <파일명>에는 와일드카드 문자의 사용이 가능합니다.
 
◇ 예 :
if errorlevel 2 goto quit
if not %1 ==%2 goto process
if exist d:worktemp.$$$ del d:worktemp.$$$
 
◇ 설명 :
직전에 실행한 명령의 종료 코드가 2 이상일 경우 레이블 QUIT로 이동합니다.
환경변수 %1과 환경변수 %2에 대입되어 있는 문자열이 같지 않을 경우에만 레이블 PROCESS 로 이동합니다.
경로 D:Work 에 temp.$$$ 라는 파일이 존재하면 그 파일을 삭제합니다.
 
 
7. PAUSE
배치 파일 실행을 일시 정지합니다.
 
◇ 사용법 :Pause [문자열]
 
◇ 옵션
 
- 문자열 : 문자열을 생략하면 'press any key to continue...'라는 메세지가 화면에 출력됩니다. 만약 PAUSE 명령 뒤에 어떤 메세지를 지정하여 그 메시지를 출력하고 싶다면 'Echo On' 명령을 우선 내려야 합니다.
 
◇ 예 :
echo on
pause 준비가 되었으면 아무키나 누르세요...
 
◇ 설명 : 배치 처리 중 pause명령을 만났을때 임의의 다른 메시지를 화면에 출력하고 싶다면 예 에서와 같이 반드시 echo on 명령이 선행되어야 하며 예의 경우에는 ' 준비가 되었으면 아무키나 누르세요...' 라는 메세지가 출력됩니다.
 
◇ 참고 : 위 처럼 하면 화면에 Pause 라는 명령어까지 같이 출력되므로 이런경우
echo on
echo 준비가 되었으면 아무키나 누르세요...
pause > Null
 
이런식으로 사용하면 출력하고자 하는 메세지만 화면에 출력됩니다.
 
 
8. REM
배치 파일 내에 주석문을 부여하고 싶을 때 사용합니다.
 
◇ 사용법 :rem [문자열]
 
◇ 옵션
- 문자열 : 주석문으로 쓰고 싶은 것을 적어줍니다.
 
◇ 예 : REM 이 배치파일은 샘플입니다.
 
배치파일내의 적당한 위치에 적절한 주석문을 붙여두면 배치 처리의 흐름을 일목요연하게 볼 수 있습니다.
 
 
9. SHIFT
배치 파일에 주어진 파라미터(%1~%9)와 실행시에 지정되는 값과의 대응을 하나씩 뒤로 이동하여 표시합니다.
 
◇ 예
 
:loop
if "%1" == " " goto end
echo %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
shift
goto loop
:end
 
위와 같이 배치 파일을 작성해두고 다음과 같이 배치파일을 실행해 보면 shift 명령이 어떤 역할을 하는지 금방 알 수 있습니다..
C:bats> test.bat A B C D E F G H I J 0 1 2 3 4 5 ☜똑같이 입력하고 실행후 확인
1.배치파일(Batch File, 일괄처리용 화일)
1.1. 배치파일?
Batch(배치)는 '한 묶음','한벌'의 의미하며, 배치파일은 여러 가지 명령어를 한 파일에 모아 작업하는 파일, 즉 하나의 일을 처리하기 위해 여러번 내리는 명령어를 한 번만에 처리할 수 있도록 만들어 놓은 실행파일이다.
① 확장자 이름은 반드시 'BAT'이어야 한다.
② 파일명은 도스의 내부명령어 이름을 피하라.
③ COM, EXE 파일의 이름을 피하라.
④ 명령어 이름이 서로 같아 충돌할 때, DOS는 도스키-->내부명령-->외부명령( *.COM-->*.EXE)-->*.BAT) 순으로 실행한다.
    다만 '파일명.BAT'라고 확장자 이름까지 써서 명령을 내리면 이런 문제는 해결된다.
⑤ BAT파일은 표준 ASCII 문장(Text) 파일이어야 한다.
 
1.2. BAT파일 만드는 방법.
일반 도스 명령어와 배치전용 명령어를 사용하여 다음의 3가지 방식을 사용하여 아스키 문장파일 형식으로 만든다.
① COPY명령사용 ....  C:>COPY CON XXXX.BAT
② 문서편집기 이용 ... 'EDIT', 'SAN'
③ 문서 작성기(WordProcessor) ..  아래한글,훈민정음 등
 
작성 예①)  C:>COPY CON SAMPLE.BAT  <엔터>
─────       CLS
                DIR A:
                V3 C:
                ^Z
                1 File(s) Copied
<설명1> COPY 명령을 사용하여 텍스트 파일 만드는 방법을 이용한다.
CON은 장치 파일명으로 여기서는 키보드를 지칭한다.키보드로 입력한 문자를 SAMPLE.BAT라는 파일명으로 복사.출력하라는 뜻이다.
입력한 배치 내용을 보면
화면을 깨끗이지우고(CLS), A드라이브의 파일목록을 보이라, 그리고 C 디스크에 바이러스 감염 여부를 점검.치료하라는 명령이다.
줄을 바꿀 때는 항상 엔터하면 된다. 끝낼 때는 언제나 Ctrl+Z 또는 F6키를 누르고 엔터하면 1개 파일이 복사되었다는 메시지가 나오면서 C루트에 SAMPLE.BAT란 파일이 1개 생긴다.
<실행> C:>SAMPLE <엔터>하면 배치파일 내용 순서데로 명령을 실행한다.
-----
작성 예②)  C:>EDIT <엔터>
     도스 편집기 화면이 뜬다.  이때  ESC키를 한번 눌러 메시지 상자를 제거하고 깨끗한 화면에다 첫째 줄부터 입력하되, 줄을 바꿀 때는 엔터한다.
               CLS
               DIR A:
               V3 C:
끝내려고 저장글쇠(@F,S)를 누르면 파일이름을 써넣으라고 상자자 나온다. SAMPLE.BAT라고 입력하고 <엔터>하여 저장한 후, 에디트를 끝(@F, X)낸다.그러면 C루트 디렉토리에 SAMPLE.BAT 라는 배치파일이 생긴다.
<실행> C:>SAMPLE <엔터>하면    C루트에 있는 SAMPLE.BAT 파일이 실행된다.
******* 배치파일 내용에 파일스펙 경로명을 쓸 때 주의점.****
ⓐ 배치파일 내용 중에
   C:GAMESUPERSUPER.EXE 라고 해놓으면
현재 도스 작업방을 바꾸지 말고 C:GAMESUPER 방에있는 SUPER.EXE를 실행하라는 뜻이기 때문에 경우에 따라서는 실행이 되지 않는다.
ⓑ 배치 내용을 아래와 같이 하면 틀림없이 실행하게 된다.
  C:
  CDGAMESUPER
  SUPER
현재 도스작업방이 먼저 C드라이브로 바뀌고,절대경로명 CDGAMESUPER
디렉토리로 이동한 후에 SUPER.EXE 파일을 실행한다            ******
 
1.3.배치파일 명령어들
① 일반적인 도스명령를 그대로 사용한다.
  CLS  COPY  DEL  DIR  DATE  TIME   PAYH   PROMPT  CHKDSK 등등.
② 배치에만 사용하는 전용 명령가 있다.
  ECHO   REM   PAUSE  CALL   GOTO    CHOICE   IF   FOR   SHIFT
(메아리)(설명) (쉼)  (부름) (가기)   (선택) (조건)(순환) (옮김)
 
ⓐ REM
   [베치파일 속에 달고 싶은 설명.주석]....설명이 화면에 나옴.
ⓑ PAUSE
   배치파일 실행중 일시 멈추게함.
   화면에 'Press any key to continue...'
          (계속하려면 아무키나 누르세요)
배치실행을 중단하려면 Ctrl+C키를 누른다. 그러면 화면에
           'Terminate batch job (Y/N)?'
          (배치작업을 끝내겠읍니까?)  Yes / No
ⓒ ECHO 명령
형식> ECHO 문자열
      에코명령 다음에 오는 문자열을 화면에 나타낸다.
    ECHO ON
      이후부터 '명령어'라인을 화면에 보인다.(도스 초기값)
    ECHO OFF
      이후 실행되는 명령어 라인을 화면에 나타내지 않는다.
      화면이 깨끗하고, 화면출력속도.가독성 증가한다.
      'ECHO OFF'라는 그 자체까지 보이지 않게 하려면 @ 을 앞에 쓴
      다.( @ECHO OFF )
    ECHO
      현재 ECHO ON/OFF 상태를 확인한다.
 
<예> C:>COPY CON EDIT2.bat
   ECHO OFF
                 이후에 실행되는 명령어는 화면에 나타나지 않는다.
                 화면에 ECHO OFF 자체는 나타난다.
   TB
                 태백한글을 메모리에 상주 띄우기.
                 각자 지원되는 다른 한글코드(HANME,HT,DKBY 등)를
                 실행하면 된다.
                 한글도스인 때는 HBIOS.COM을 실행한다.
   PAUSE
               잠시 중지. 엔터하면 다시 진행한다.
   CLS
              화면청소
   ECHO 'This is Hangul Edit.'
                            '문자열'을 화면에 출력한다.
   PAUSE
   REM NOW,DOS EDIT IS HANGUL EDITOR.
                REM 다음에 오는 설명은 화면에 나오지 않는다. 다만
                사용자가 배치파일 내용을 볼 때 참고할 내용이다.
   ECHO ON
              이후에 실행되는 명령어는 화면에 나타남
   EDIT
              도스 에디터 화면이 나오면 한글로 문서를 작성.저장한
              후 끝낸다.
   @ECHO OFF
             이후에 실행되는 명령어는 화면에 나타나지 않는다.
             ECHO OFF자체도 나타나지않음.
   TB/U
            태백한글 메모리서 제거한다.
   CLS
   ^Z
           CTRL+Z 또는 F6를 누른다.
   1 File(s) Copied
  실습을 위하여 일부러 여러가지 명령 종류를 써 보았으며,한글로 설 명을 하느라고 줄이 떨어졌으나 각자 실습할 때는 영문글자 부분만 쓰고 엔터하여 줄울 바꾸고 줄간격을 붙여가며 쓴다.
<실행 예>  C:>EDIT2 <엔터> 하면
위의 내용을 순서데로 실행하고 도스 문서편집기가 화면에 나타난다. 문서작성기를 끝내면 한글프로그램을 메모리에서 제거하고 도스로 나온다
1.4 배치파일 전용 명령에서
? 판단과 분기에 관한 명령  ....  CALL, CHOICE, IF, GOTO
앞에서 공부한 배치파일의 경우는 입력된 명령어들의 순서데로 실행되었었지만, 판단과 분기의 명령들은 명령어의 실행의 흐름을 사용자가 임의로 변경,지정할 수있어 배치파일의 기능을 보다 강력하게 한다.
분기 명령..배치파일의 순차적 수행을 필요에 따라 변경할 때 사용하며
          배치파일에 프로그램적 기능을 갖게하는 명령이다.
조건분기(Conditional Branching).......IF명령
무조건분기(Unconditional Branching)...GOTO명령
① CALL [배치파일 인자]
배치파일 실행 중 다른 배치파일을 도중에 호출하여 실행시키고 다시
원래 배치파일로 돌아오게 하는 명령이다.
<예>  H1.BAT의 내용이 'DIR C: > A:MDIRLIST.TXT' ( C루트의 파일목
록을 A드라이브에 MDIRLIST.TXT 란 파일로 출력하라) 이라고 하자.
  C:>COPY CON H2.BAT
    CALL H1.BAT
    TYPE A:MDIRLIST
    ^Z
<실행> C:>H2 엔터하면 H1.BAT란 배치파일을 불러(CALL) 실행하여 MDIRLIST.TXT 파일을 A드라이브에 만든 후, 다시 H2.BAT 파일로 돌아와서 A드라이브의 'MDIRLIST.TXT' 파일을 화면에 타이프해 보인다.
 
②  IF 조건
주어진 조건에 따라 명령을 선별적으로 선택.실행케 하는 명령이다.
IF EXIST [파일이름] [명령]
         찾는 파일이 존재하면 명령을 실행하라
IF NOT EXIT [파일이름] [명령]
         찾는 파일이 없으면 명령을 실행하라
<예> IF EXIST *.BAK DEL *.BAK
       BAK라는 백업파일이 있으면 모두 지워버리라.
 
IF [NOT] "문자열1" == "문자열2" [명령]
    "문자열1"과 "문자열2"가 서로 일치 [불일치] 하면 명령을 실행하라.                     (양쪽 비교 문자열의 영문 대소문자를 구분한다)
    ==은 EQ로, !=은 같지 않다는 부호인데 NE로 대신할 수 있다.
   문자열은 " " 으로 반드시 구분하고 부호와는 한 칸 띈다.
<예> 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 라고 표시한다.
IF [NOT] ERRORLEVEL [값] [명령]
     IF명령 바로 앞에서 수행되었던 프로그램이 수행을 마치면서 남긴 종료코드(ExitCode)를 검사하여 지정 값보다 크면(작으면) 명령을 실행하라는 뜻이다.
종료코드를 발생하는 명령어(FORMAT,XCOPY,COPY,BACKUP,RESTORE 등 일
반 도스명령어들 메뉴얼 참조)들은 0~255 범위에서 종료코드(EXITCODE)
값을 가지는데
에를 들면 XCOPY명령에서 성공적 수행일 때는 0, 화일이 없을 때 1, CTRL+C로 중단하면 2, 초기화 오류발생 때는 4, 디스크 에러에는 5를 반환하는 식으로 정해저 있다.
예>  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 !' 라는 메시지가 나온다.
③ GOTO [레이블이름]
  레이블 이름이 있는 행으로 실행 순서를 옮긴다.
  '레이블(Label)'은 8자이 내로, 레이블 앞에는 콜론(:)을 사용한다.
<예> 현재 디렉토리에 *.HWP 파일을 C:HNCDOC 디렉토리로 옮겨주는
     배치파일을 만들어 보자.
   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
실행> C:>HWPMV  엔터하면 C루트 디렉토리에 있는 모든 HWP 파일을 C:HNCDOC 디렉토리로 옮기고 'HWP 파일을 모두 옮겼다'는 메시지를 화면에 보이고 END(끝) 레이블로 와서 도스상태로 빠저나 온다. 옮길 HWP 파일이 없으면 ' HWP 파일을 찾지 못했다'는 메시지가 나오고 끝(END) 낸다.
     GOTO 문에서는 항상 END 레이블로 배치를 끝낸다.
배치 안에서 COPY,XCOPY,MOVE 명령은 /-Y 스위치를 써야 만이 목적지에 같은 이름의 파일이 있을 경우 덮어 쓸지여부를 확인하는 메시지를 출력한다.
④ 의사변수(Dummy Variables 가상의 변수)
바꿔 쓸 수 있는 인자(Replaceable Parameter)를 의사변수라 하며,
%0 ~ %9(10개)으로 표시한다.
형식> C:>명령어 파일1 파일2   "    "   "   "   "   " 파일9
           %0    %1    %2    %3   %4  %5  %6  %7  %8  %9
작성예1> 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' 파일 내용이 출력된다.
 
작성예2> C:>COPY CON EDIT2.BAT
             @ECHO OFF
             CLS
             TB          .....tb라는 프로그램을 메모리에 설치
             EDIT %1     ......%1은 '지정 파일'로 대체된다.
             TB/U        .......태백 한글을 메모리에서 제거
             ^Z
실행예> C:>EDIT2 SAMPLE.TXT (엔터)
             %0    %1
설명> 위 '실행예'에서 명령어(EDIT2.BAT)는 %0, 파일1(SAMPLE.TXT)은 %1 에 해당하므로, '작성예2'의 배치파일 내용중 %1 대신에 SAMPLE.TXT라는 텍스트 파일이 대입된다.
화면은 한글을 읽고 쓸 수 있도록 태백한글을 메모리에 상주시킨다. 편집기는 SAMPLE.TXT 라는 파일을 읽어 화면에 띄워 수정.삽입 등 편집하고 저장할 수 있다. 편집을 끝내면 한글코드가 메모리에서 제거된다.
 
⑤ SHIFT
쉬프트는 옮김,변위를 의미하는 데 10개 이상의 대체 인자(Replaceable
Paramete)도 사용 가능하다. 대체인자를 한 자리씩 왼쪽으로 이동한다.
작성예> 지정한 문장(text) 파일들을 차례로 TYPE시키는 배치파일 예.
A:>COPY CON TELLME.BAT
    @ECHO OFF
    :BEGIN
    IF NOT EXIST %1 GOTO END
    TYPE %1
    SHIFT
    GOTO BEGIN
    :END
    ECHO 더이상 파일이 없습니다.
    ^Z
실행예> A:>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(고리)라고 한다.
 
⑥ 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
<실행>  C:>TYPEALL C:MDIR*.BAT 엔터
  (*.BAT,  *.DOC,  *.TXT,  *.CAP 중에서 한 종류 파일만 지정한다.)
위 TYPEALL.BAT 파일을 실행할 때는 파일스펙(경로특정)이 있어야 한다.
 
2. 자동형 배치파일 (Aautoexec.bat)
일반배치파일 만들기와 동일하며 다만 이름만 AUTOEXEC.BAT로 한다.
컴퓨터를 구입할 때 이미 작성되어 있으므로 그 내용만 자기 필요에 따라 변경하면 될 것이다. 만약을 위해 원본 파일을 다른 곳에 백업해 놓고 필요시 다시 복사하면 좋을 것이다.
<작성예>  C:>COPY CON AUTOEXEC.BAT
         @ECHO OFF
         CLS
         SMARTDRV
         LH V3RES
         PROMPT $P$G
         PATH=C:;C:DOS;C:MDIR;C:V&P
         LH DOSKEY
         M
         ^Z
         1 FIle(s) Copied
①  컴퓨터가 부팅할 때 DOS 시스템 프로그램을 메모리에 상주시킨 후
곧 바로 자동실행 배치파일의 내용의 명령들을 실행한다.
 
 
 
_3강-batch_파일_정복 3_
 
배치파일작성법
 
Dos에서 사용되는 기본 명령어와..  (윈도의 커맨드라인에서의 명령어들...)  배치파일에서만 사용되는 명령어등에 대해 올립니다.
 
CALL
배치 프로그램에서는 COM이나 EXE 확장자를 가진 실행 파일은 해당 파일 이름을 입력함으로써 실행시킬 수 있다. 그러나 배치 프로그램은
이러한 방법을 사용하여 실행할 수 없다. 따라서 MS-DOS에서는 배치 프로그램을 실행하는 도중에 다른 배치 프로그램을 실행하기 위한
특별한 명령어를 준비하고 있다. 배치 프로그램에서 다른 배치 프로그램을 호출하기 위하여 사용되는 명령어는 CALL로써, 해당 배치 프로그램을
종료하지 않고 다른 배치 프로그램을 실행하기 위하여 사용한다.
배치 프로그램 안에서 다른 배치 프로그램을 호출할 경우에는 반드시 BAT 확장자를 생략하여야 한다. 즉, 배치 프로그램 안에서 실행
파일을 실행하기 위해서는 실행 프로그램의 이름만 입력하거나 확장자를 포함할 수 있었지만 배치 프로그램에서는 반드시 호출할 배치 프로그램의
파일 이름만 지정하여야 하는 것이다.
 
■ 사용법
CALL [[drive:][path]] filename [batch-para]
 
■ 옵션 및 매개변수
[drive:][path] filename 실행할 배치 파일의 경로와 이름을 지정한다. CALL 명령어를 사용하여 실행할 배치 파일은 반드시 BAT 확장자를 갖는 파일이어야 한다.
batch-para 배치 파일을 실행하기 위한 모든 변수를 지정한다. 지정할 수 있는 변수는 매개변수와 옵션을 포함한다.
 
■ 사용상 주의
☞ batch-para 사용하기
batch-para는 배치 파일에 전달할 수 있는 모든 정보를 포함할 수 있는데, 여기에는 옵션과 파일명, 그리고 %1∼%9까지의 변경할 수 있는 매개변수와 %band%와 같은 변수가 포함된다.
 
☞ 파이프(|)와 방향 전환 기호()의 사용
CALL 명령어에서는 파이프(pipes: |)와 방향 전환을 위한 방향 전환 기호(redirection symbols:, ,
 
☞ 반복적인 CALL 만들기
CALL 명령어를 사용하여 자신의 배치 파일을 호출함으로써 반복적인 배치 파일을 만들 수 있다. 이 경우처럼 반복적인 배치 파일을 만드는 경우에는 반드시 해당 배치 파일을 끝낼 수 있도록 설계되어야만 한다. 그렇지 않으면 무한 루프로 되어 해당 배치 파일을 영원히
끝나지 않게 된다.
 
■ 사용 예
HWPCHECK.BAT 파일을 다른 배치 파일에서 실행시키고자 한다면, 해당 배치 파일에 다음을 포함시킨다.
call hwpcheck
위의 예에서 현재 실행 중인 배치 프로그램에서 2개의 매개변수를 받은 다음 이를 실행할 배치 프로그램에 전달하고자 한다면 다음과 같이 뒤에 매개변수를 할당한다.
call hwpcheck %1 %2
 
CHOICE
이 명령어는 GOTO 명령어를 사용하여 다중 분기문을 작성하기 위하여 사용하는 것으로, 일반적으로 다중 배치 프로그램을 작성하기 위하여 사용되는 배치 프로그램 명령어이다.
이 명령어는 배치 프로그램에서 사용자가 지정한 프롬프트 상태를 유지하고 있다가 지정된 시간이 경과되거나 지정된 문자를 지정하면 다음 명령어를 실행한다.
이 경우 CHOICE 명령어는 에러 수준 종료코드를 운영 체제에 돌려주는데, 종료 코드와 GOTO 명령어를 이용하여 작업을 세분할 수 있다.
 
■ 사용법
CHOICE [/C[:]choices] [/N] [/S] [/T[:]c,nn] [text]
 
■ 옵션 및 매개변수    text 사용자가 선택하도록 기다리는 프롬프트 앞에 출력하고자 하는 문자열을 지정한다. 만약, 프롬프트 앞에 디스플레이될 문자열의 일부로 옵션 부호(/)를 사용하려면 따옴표를 사용해야 한다. 문자열을 지정하지 않는 경우에는 선택할 프롬프트만 디스플레이한다.
/c[:]choices 프롬프트로 선택할 수 있는 문자를 지정한다. 다수의 문자를 지정하는 경우에는 콤마(.)를 분리 문자로 사용하며, 지정한 문자는 괄호안에 나타나고 물음표 다음에 디스플레이된다. /c 옵션을 지정하지 않는 경우 YN을 디폴트 값으로 사용한다. 콜론(:)은 선택적으로 생략할 수 있다.
/n 사용자가 항목을 선택하도록 대기하는 프롬프트가 디스플레이되지 않도록 지정하기 위하여 사용한다. 그러나 프롬프트 앞의 문자열은 디스플레이된다.
만약, /n 옵션을 지정하지 않으면 CHOICE 명령어 라인에 지정한 선택 문자는 유효하다.    /s 대 소문자를 구분하여 받아들이도록 지정하기 위하여 사용하는 옵션이다.
만약, /s 옵션을 지정하지 않으면 사용자가 지정한 선택 문자의 대 소문자를 구분하지 않고 모두 받아 들인다.
/t[:]c,nn 사용자가 선택 문자를 지정하지 않을 때 디폴트로 선택될 문자와 기다리는 시간을 지정한다.
c 사용자가 선택 문자를 지정하지 않을 때 디폴트로 선택될 문자를 지정하고, 이 문자는 /c 옵션에서 지정한 선택 문자 안에 있는 것이어야 한다.
nn c 값을 디폴트로 선택하기 전에 대기할 프롬프트 시간을 지정한다. 지정할 수 있는 값의 유효 범위는 0∼99 값의      범위에서 초 단위로 지정한다. 만약, 0초를 지정하면 항상 디폴트 값이 사용된다.
 
■ 사용상의 주의
☞ 작업을 분할하기
CHOICE 명령어는 작업을 분할하기 위하여 사용한다. 즉, CONFIG.SYS 에서는 다중 부트 분할을 만들어 사용자가 원하는 시스템 구성으로 컴퓨터를 시작할 수 있다.
AUTOEXEC.BAT에서는 이 명령어를 사용하여 다중 환경으로 구성할 수 있다.
CHOICE 명령어를 사용한 다중 부트 분할에 대해서는 다음에 설명할 "사용 예"를 참조하기 바란다.
 
☞ CHOICE의 메시지
다음은 배치 프로그램에서 CHOICE 명령어를 사용하는 방법과 그에 따른 메시지를 나타낸다.
CHOICE 명령어에 선택 문자만을 지정한 경우 명령어 줄 choice /c:ync 메시지 [Y,N,C]?
CHOICE 명령어에 선택 문자와 문자열을 지정한 경우 명령어 줄 choice /c:ync Yes, No, or Continue    메시지 Yes, No, or Continue [Y,N,C]?
CHOICE 명령어에 프롬프트를 생략하는 /n 옵션을 사용한 경우 명령어 줄 choice /n Yes, No, or Continue?    메시지 Yes, No, or Continue?
CHOICE 명령어에 /t 옵션을 사용한 경우    명령어 줄 choice /c:ync /t:y,5    메시지 [Y,N,C]?
위의 예에서 만약 5초 이내에 선택 문자 중에서 아무키라도 누르지 않으면 CHOICE는 자동으로 Y를 선택하고 종료 코드 값으로      1을 운영 체제에 넘겨준다.
5초 이내에 선택 문자를 누르면 CHOICE는 선택한 값에 대응되는 종료 코드를 넘겨준다.
 
☞ 종료 코드    CHOICE 명령어는 실행을 종료한 뒤 에러 수준 종료 코드를 운영 체제에 돌려주는데, 사용자는 종료 코드를 이용하여 다중 분기문을 작성할 수 있다.
다음은 CHOICE가 운영 체제에 돌려주는 종료 코드에 관한 설명이다.    0 배치 프로그램을 중단하기 위하여 키보드 상에서 + 혹은 +를      눌렀다.
1 사용자가 첫번째 선택 문자를 선택하였다.
2 사용자가 두번째 선택 문자를 선택하였다.
3 사용자가 세번째 선택 문자를 선택하였다.
. .
. .
255 에러가 발생하였다.
종료 코드를 이용하는 방법에 관한 자세한 사항은 IF 명령어를 참조하거나, 다음에 설명할 "사용 예"를 참조하기 바란다.
 
■ 사용 예
컴퓨터를 켤 때 사용자가 원하는 경우에 C드라이브에 있는 파일들의 단편화를 제거하는 프로그램인 DEFRAG를 실행하도록 설정하려면 AUTOEXEC.BAT 파일에 다음과 같은 내용을 추가한다.
만약, 다른 명령어를 지정하여 사용하고자 한다면 DEFRAG 대신에 원하는 명령어를 지정한다.    choice Defrag drive /t:n,5
if errorlevel 255 goto error
if errorlevel 2 goto
SkipDefrag    defrag c:
/f/se/b    :error
echo Error Found!
pause
:SkipDefrag    만약 5초
이내에 Y를 누르면 단편화 제거 프로그램이 실행되고 CHOICE는 1의 값을 종료 코드 값으로 운영 체제에 돌려준다. 5초 이내에 Y키를
누르지 않거나 N키를 누르면 C 드라이브의 단편화 제거 프로그램은 실행되지 않는다. 만약, 단편화 제거 프로그램이 실행된다면 /b 옵션을 사용하였기
때문에 프로그램이 종료됨과 동시에 컴퓨터를 재시동하게 된다. 다음의 배치 프로그램의 예는 CHOICE 명령어를 이용하여 HWP, Windows, MS-DOS 에디터, MS-DOS의 백업 프로그램
중에서 하나를 선택하는 방법을 보여준다. 단, 위의 모든 실행 프로그램은 하드디스크에 설치되어 있고, PATH 명령어에 경로가 추가되어 있다고 가정한다.
 
@echo off
cls
echo 1 HWP
echo 2 Windows
echo 3 MS-DOS Editor
echo 4 Backup
choice /c:1234
if errorlevel 255 goto Exit
if errorlevel 4 goto Backup
if errorlevel 3 goto Edit
if errorlevel 2 goto Win
if errorlevel 1 goto Hwp
 
:Backup
c:dosmsbackup
goto Exit
 
:Edit
edit
goto Exit
 
:Win
c:windowswin
goto Exit
 
:Hwp
c:hwp21hwp
 
:Exit
 
 
ECHO
이 명령어는 배치 프로그램에서 필요한 메시지를 디스플레이하기 위하여 사용한다. 즉, 배치 프로그램에서 작업 중 텍스트로 이루어진 메시지를 스크린에 디스플레이하는데
사용된다. 이 외에도 배치 프로그램에 지정되어 있는 명령어의 반향을 켜거나 끄도록 설정하기 위하여 사용한다. 예를 들어, 다수의 명령어 행을
포함하고 있는 경우에는 명령어 반향을 끄기 위하여 배치 프로그램의 첫 행에 "echo off"를 추가한다.
 
■ 사용법
ECHO [ON|OFF]
ECHO [message]
 
옵션 및 매개변수
on|off 명령어 반향의 특징을 켤 것인지 아니면 끌 것인지를 결정한다. 현재의 ECHO 설정을 디스플레이하기 위해서는, 매개변수 없이 사용한다.
message 배치 프로그램을 실행할 때 화면에 디스플레이될 문자열을 타이프한다.
 
■ 사용상의 주의
☞ ECHO 명령어에 메시지 사용하기
ECHO 명령어는 ECHO가 OFF로 설정되어 있는 경우에 매우 유용하다. 즉, 다른 명령어를 디스플레이하지 않고 몇 줄의 메시지를
디스플레이하기 위하여 배치 프로그램에서 ECHO OFF 명령어를 사용한 다음, 필요한 메시지를 연속적으로 ECHO 명령어 뒤에 기록한다.
 
☞ 명령어 감추기
다수의 명령어를 포함하는 배치 프로그램인 경우 ECHO OFF 명령어를 사용하여 배치 프로그램에 포함되어 있는 명령어가 화면에 나타나지 않는다. 만약,
배치 파일에 포함된 프롬프트를 디스플레이하려면 ECHO ON 명령어를 사용한다.
 
☞ 한 줄의 명령어 라인만 감추기
ECHO OFF 명령어를 사용할 경우에는 다음에 ECHO ON 명령어가 나타날 때 까지 배치 프로그램 안에서는 계속 유효하다. 그러나,
ECHO OFF 명령어는 프롬프트 상에 반향되어 나타난다. 만약, ECHO OFF 명령어 자체를 반향하지 않도록 하려면 at 기호(@)를 사용하여야 한다. 즉, 배치 프로그램의 맨
위에 "@ECHO OFF"라고 입력하면 프롬프트 상에 ECHO OFF라는 명령어도 디스플레이되지 않는다.
 
☞ @와 콜론(:), 세미콜론(;), REM
명령어와의 비교 한줄의 명령어 라인을 실행하지 않기 위해서는 콜론(:)과 세미콜론(;), REM 명령어를 사용한다. 이명령어나 기호는 CONFIG.SYS와 배치 프로그램에서만 사용하는 명령어로써
콜론(:)은 해당 명령어 라인을 GOTO 명령어에 의해 찾아갈 레이블로 인식하기 때문에 명령어를 실행하지않고, 세미콜론(;)과 REM 명령어는 MS-DOS에서 주석문을 달기 위하여 사용되는 명령어이기 때문에 세미콜론이나 REM이 명령어 라인의 맨 앞에 오면 해당 명령어 라인은 MS-DOS가 실행하지 않는다. 따라서, @는 명령어를 실행하되 명령어를 프롬프트 상으로 반향하지 않는다는 것이고,
콜론, 세미콜론, REM 명령어는 명령어의 반향과는 무관하고 단지 명령어행으로 인식하지 않는다는 차이가 있을 뿐이다.
 
☞ 빈줄을 디스플레이하도록 하기
스크린에 빈줄을 디스플레이하려면 ECHO 명령어 다음에 마침표(.)를 입력한다. 만약 ECHO와 마침표 사이에 스페이스가 있는 경우에는
화면에 마침표(.)를 디스플레이하므로, 빈줄을 디스플레이하려면 둘 사이에 스페이스를 두지 않아야 한다.
 
☞ 파이프와 방향 전환 기호의 디스플레이 사용자는 ECHO 명령어를 사용하여 파이프(|)나 입출력 방향 전환 기호()를 디스플레이할 수 없다.
 
■ 사용예
다음의 예는 선행하는 세 줄의 메시지를 포함하고, 빈줄이 뒤따르는 배치 프로그램의 일부이다.
 
echo off
echo.    echo This
is batch program
echo formats and checks
echo new disks
echo.    .
.
 
위의 예에서 ECHO를 끄고, ECHO 명령어를 반향하지 않도록 하려면 다음과 같이 명령어 앞에 at 기호(@)를 포함한다.
@echo off
사용자는 배치 프로그램을 작성할 때 IF 명령어를 ECHO 명령어와 함께 사용할수 있다. 다음의 예는 명령어 라인상에 IF와 ECHO 명령어를 사용한 예이다.
 
if exist *.rpt echo
the report has arrived.
 
FOR
사용자가 지정한 일련의 파일에 지정된 명령어를 실행하기 위하여 사용하는 명령어이다. 사용자는 FOR 명령어를 배치 프로그램에 사용할
수 있고, 직접 프롬프트 상에서 사용할 수 있는데, 일반적으로 배치 프로그램에서 많이 사용되므로 FOR 명령어를 배치 프로그램 명령어로
분류하기도 한다.
 
■ 사용법
배치 프로그램에서의 FOR 명령어 사용 방법
FOR %%variable IN (set) DO command [command-para]
 
명령어 프롬프트에서의 FOR 명령어 사용 방법
FOR %variable IN (set) DO command [command-para]
 
■ 옵션 및 매개변수
%%variable 혹은 %variable
FOR 명령어에서 교체할 수 있는 변수를 지정한다. FOR 명령어에서는 지정된 명령어가 모든 파일을 처리할 때까지
%%variable(또는%variable)을 모든 매개변수와 차례로 교체하여 사용한다. FOR 명령어를 수행하기 위하여 배치 프로그램에서는
%%variable을 사용하고, 명령어 프롬프트에서는 %variable을 사용한다. (set) 사용자가 지정한 명령어로 처리하고자 하는 하나 이상의 파일이나 텍스트 문자열을 지정한다.
 
command 지정된 (set)에 포함된 각 파일에서 수행하고자 하는 명령어를 지정한다.
command-para 지정된 명령어가 매개변수나 옵션을 사용할 경우, 해당 옵션이나 매개변수를 지정한다.
 
 
■ 참고 사항
☞ IN과 DO 키워드 사용하기
IN과 DO는 매개변수나 옵션이 아니다. 그러나 이것은 FOR 명령어를 사용하기 위하여 반드시 사용해야 할 키워드이다. 만약, FOR
명령어를 사용할 때 IN과 DO의 키워드 중 어느 하나를 생략하면 MS-DOS는 사용자가 지정한 명령어 형식이 적절하지 않다는 오류
메시지를 디스플레이한다.
 
☞ 교체할 수 있는 변수 사용하기
%에서 %까지의 배치 매개변수와 혼란을 피하기 위하여 %1부터 %9까지의 숫자들을 제외한 모든 문자를 변수로 사용할 수 있다. 간단한
배치 프로그램에는 %%f나 %f와 같은 단일 문자가 필요한 전부가 될 수 있다.
사용자는 다른 교체 가능한 변수를 구별하기 위하여 복잡한 배치 프로그램에서 variable에 다수의 값을 사용할 수 있다. 그러나
같은 명령어 라인에 다수의 FOR 명령어를 인접하여 추가할 수 없다.
 
☞ 다수의 파일군을 지정하기
(set) 매개변수는 파일의 단일 그룹 혹은 다수의 파일 그룹을 지정할 수 있다. 또한 사용자는 파일 세트를 지정하기
위하여 와일드 카드를 사용할 수 있다. 다음은 모두 사용할 수 있는 파일 세트의 예이다.
(*.doc)
(*.doc *.txt *.me)
(jan*.doc jan*.rpt feb*.doc feb*.rpt)
(arp??1991.* ap??1991.*)
사용자가 FOR 명령어를 사용할 때 (set)에 있는 첫번째 값은 %%variable(또는 %variable)을
대체한다. 그리고 MS-DOS는 이 값을 처리하기 위해 지정한 명령어를 수행한다. 이것은 (set)에 있는 값에 해당하는
모든 파일을 모두 처리할 때까지 기다린다.
 
■ 사용 예
TXT나 DOC 확장자를 가진 현행 디렉토리 내의 모든 파일의 내용을 디스플레이하는데 TYPE 명령어를 사용하고, 이를 위하여 FOR
명령의 교체 가능한 변수로 %f를 사용하려면 다음과 같은 FOR 명령어를 사용한다.
for %f in (*.txt *.doc) do type %f
위의 예에서 현행 디렉토리 내의 TXT나 DOC 확장자를 갖는 각각의 파일은 모든 파일을 디스플레이할 때까지 %f 변수를 대신한다.
위의 예를 배치 프로그램에서 사용하려면 %f의 모든 발생을 %%f로 교체한다. 그렇지 않은 경우 MS-DOS는 변수를 무시하고 에러
메시지를 디스플레이한다.
MS-DOS는 지정된 명령어와 함께 사용하고자 하는 명령어 옵션과 파이프(|), 방향 전환 기호()를 모두 지원한다. 예를
들어, 위의 예에서 출력을 스크린으로 하는 대신에 PRN(디폴트 프린터)으로 방향을 전환하려면 다음과 같은 명령어를 사용한다.
for %f in (*.txt *.doc) do type %f  prn:
위의 예에서 PRN은 디폴트 프린터를 의미한다. 즉, PRN은 하나의 프린터를 가지고 있는 경우에 사용될 수 있는 명령어이다. 만약
둘 이상의 프린터와 연결되어 있는 경우에는 LPT1, LPT2 혹은 LPT3 등으로 연결된 프린터 포트를 정확히 지정하여야만 한다
 
GOTO
이 명령어는 배치 프로그램에서 사용자가 지정한 레이블에 의해 표시된 명령어 라인으로 직접 이동하기 위하여 사용한다. 일단 지정된 레이블로
이동한 후에는 다음 라인에 있는 명령어를 처리한다. GOTO 명령어가 단독으로 사용되면 무조건 지정된 레이블로 이동한다. 그러나, 일반적으로
GOTO 명령어는 IF 명령어와 함께 조건 분기를 위하여 사용된다. 즉, IF 명령어의 조건문을 만족하는 경우에는 지정된 레이블로 이동하고
조건문을 만족하지 않으면 다음 명령어 라인을 실행한다.
 
■ 사용법
GOTO label
 
■ 옵션 및 매개변수 label
MS-DOS가 처리해야 할 다음 명령어 라인을 지정한다.
 
■ 사용상의 주의
☞ label에 적절한 값 사용하기 GOTO 명령어에서 사용하는 레이블로 스페이스를 포함한 모든 문자를 사용할 수 있다. 그러나
세미콜론(;)이나 등호(=)와 같은 기호는 사용할 수 없다. 세미콜론의 경우에는 배치 프로그램이나 CONFIG.SYS에서 해당 명령어 라인을 디스플레이하지 않기 위하여 사용된다.
 
☞ GOTO 명령어가 이용하는 레이블의 이름
GOTO 명령어는 명령어 라인의 맨 앞에 콜론(:)이 있으면 이를 레이블로 인식하는데, 각 레이블의 8글자만 인식한다. 따라서 각 레이블 이름이 처음 8자가 같은
경우에는 동일한 레이블로 인식한다. 즉, 찾아갈 레이블에서 콜론을 포함한 처음 8자가 같은 ":HITHER01"과 ":HITHER02"는 ":HITHER0"로 모두 같은 것으로 인식한다.
 
☞ 배치 프로그램
내에서의 label과 맞추기 사용자가 GOTO 명령어 라인에서 지정한 레이블은 배치 프로그램의 레이블과 일치하여야 하고, 배치 프로그램 내의 각 레이블은 반드시
콜론으로 시작하여야 한다. 만약, 배치 프로그램에서 GOTO 명령어로 지정한 레이블을 포함하고 있지 않은 경우 MS-DOS는 배치 프로그램의 실행을 중단하고, 다음과 같은
메시지를 디스플레이한다. Label not found MS-DOS는 콜론으로 시작하는 배치 프로그램 명령어 라인을 레이블로 인식한다. 그리고 레이블은 명령어로 인식하지
않는다. 즉, 콜론으로 시작하는 레이블에 명령어가 포함되어 있을지라도 MS-DOS는 이 명령어를 실행하지 않는다.
 
☞ GOTO 명령어를 IF 명령어와 함께 사용하기
GOTO 명령어는 무조건적인 GOTO문과 조건적인 GOTO문으로 구분된다. 무조건적인 GOTO문은 단순히 다음 단계로 가기 위하여
사용하는 방법으로 다음과 같은 형식으로 사용된다.
 
goto small    ててててててててて
:small
ててててててててて
 
조건적인 GOTO문은 IF문과 함께 쓰이는데, 조건식을 만족하는 경우에 사용자가 지정한 레이블로 이동하고, 조건식을 만족하지 않는
경우에는 다음 명령어 라인을 실행한다. IF문에 대한 자세한 사항은 본 장의 "IF" 명령어를 참조하기 바란다.
 
■ 사용 예
다음의 배치 프로그램은 A:드라이브에 있는 디스크를 포맷하는 것이다. 만약 포맷이 성공적인 경우 MS-DOS는 END라는 레이블로 직접 이동한다.
 
echo off
format a:
if not errorlevel 1
goto end
echo An error occured during formatting.
 
:end
echo End of Format
 
IF
이 명령어는 배치 프로그램에서만 사용되는 명령어로 조건적 처리를 수행하기 위하여 사용한다. 만약, IF 명령어에 지정된 조건이 참이면
MS-DOS는 그 조건 뒤에 따르는 명령어를 수행하고, 조건이 거짓인 경우에는 IF 다음의 명령어를 무시하고 다음 명령어를 수행한다.
 
■ 사용법
IF [NOT] ERRORLEVEL num command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command
 
■ 옵션 및 매개변수
not 조건문을 만족하지 않으면 뒤에 나오는 명령어를 실행하도록 하기 위하여 사용한다. errorlevelnum 직전에 실행된 프로그램이 운영 체제에 되돌려 준
종료 코드보다 크거나 같은 값인 경우에만 지정된 명령어를 실행하도록 하기 위하여 사용한다. string1==string2 string1과 string2가 같은
경우에만 뒤에 오는 명령어를 실행한다. 이값은 문자열이나 %1 혹은 %2와 같은 배치프로그램의 매개변수가 올 수 있다. 문자열이 올 경우에도 따옴표를 사용하지 않는다.
exist filename 지정한 파일명을 가진 파일이 있는 경우에 다음에 오는 명령어를 실행하도록 지정한다. command 조건문을 만족하는 경우에 실행할 명령어를 지정한다.
 
■ 참고 사항
프로그램이 중단될 때, 해당 프로그램은 운영 체제에 에러 수준 종료 코드를 되돌려주는데, errorlevel은 이러한 종료 코드를 조건문에 사용할 수 있도록 한다. 종료 코드를 사용하여
배치 프로그램을 분기하는 경우에는 항상 종료코드가 큰 값이 먼저 지정되어야 한다는 것이다. 이것은 배치 프로그램이 명령어를 순차적으로 처리하고,
IF문에서 사용되는 errorlevel은 지정한 숫자보다 크거나 같은경우 조건문을 만족하는 것으로 인식하기 때문이다. 따라서, 종료 코드를 큰 수부터 지정하지
않고 낮은 수 예를 들어 0부터 지정한 경우에는 항상 동일한 명령어만 실행될 것이다.
 
■ 사용 예
만약, MS-DOS가 MARCH.RPT라는 파일을 찾지 못하는 경우 '해당 파일이 없습니다'라는 메시지를 디스플레이하도록 배치 프로그램을 작성하려면 다음과 같이 IF 명령문을 사용한다.
@echo off
if not exist march.rpt
echo 해당 파일이 없습니다.
 
다음의 예는 드라이브를 포맷하는 동안 에러가 발생하는 경우, 해당 에러에 대한 메시지를 디스플레이하도록 작성된 배치 프로그램이다.
@echo off
format %1 %2
if not errorlevel 1
goto end
echo 포맷하는 도중에 에러가 발생하였습니다
goto exit
:end
echo 정상적으로 포맷이 완료되었습니다
:exit
 
위의 예에서 'if not errorlevel 1'은 FORMAT이 실행된 뒤 운영 체제로 되돌려준 종료 코드가 '1보다 크거나 같지 않은 경우' 즉, '1보다 작은
경우'에만 end로 이동하여 '정상적으로 포맷이 완료되었습니다'라는 메시지를 디스플레이하고 배치 프로그램을 종료한다.
프로그램의 종료 코드를 이용하여 배치 프로그램을 작성하는 경우 주의할 것은 errorlevel 다음에 지정한 숫자는 그보다 크거나 같은 경우를
지정하는 것이기 때문에, 다수의 에러 수준에 따라 다른 명령어를 수행하도록 하는 경우에는 반드시 errorlevel의 숫자가 큰 것부터 차례로 IF
명령문을 작성하여야 한다. 다음의 예는 디렉토리의 존재를 검사하기 위한 IF 명령문이다. IF 명령어는 디렉토리를 직접 검사할 수 없다. 그러나 널(NUL)
장치는 모든 디렉토리에 존재하기 때문에 디렉토리가 있는지를 검사하기 위하여 널 문자를 찾음으로써 디렉토리를 확인할 수 있다.
if exist c:hwpdatanul goto process 위의 예에서는 C드라이브 상의 HWPDATA 디렉토리가 있는지를 검사하여 있으면 process 레이블을
실행하고, 없으면 다음 명령어 라인을 실행하라는 것이다.
 
PAUSE
이 명령어는 배치 프로그램의 처리를 잠시
중단하고, 사용자에게 계속하려면 임의의 키를 누르라는
메시지를 디스플레이하도록 하기 위하여
사용한다. PAUSE 명령어는
작업 중단을 위한 +와 함께 사용하여
배치 프로그램의 작업을 나눌
수 있다.
 
■ 사용법
PAUSE
 
■사용상의 주의
☞사용자에게 프로그램을 계속하도록 프롬프트하기
MS-DOS는 PAUSE 명령어에 대한 응답으로 다음과 같은 메시지를 디스플레이한다. 사용자는 이 메시지가 디스플레이되었을 때 작업을
계속하기 위하여 임의의 키를 누를 수 있다.
Press any key to continue...
 
☞ 배치 파일의 작업 나누기
사용자가 배치 프로그램을 중단하기 위하여 배치 프로그램이 실행되는 중간에 키보드 상에서 +를 누른다. 그러면, MS-DOS는 다음과 같은 메시지를 디스플레이한다.
Terminate batch job (Y/N)?
이 메시지에 대한 응답으로 Y를 누르면 배치 프로그램의 실행을 중단하고, 운영 체제로 통제를 넘긴다. 따라서 사용자는 이러한 특성을
이용하여 때에 따라 계속하고 싶지않은 작업이 있는 경우에는 바로앞에 PAUSE 명령어를 삽입함으로써 배치 프로그램의
작업을 나눌수 있다. 즉, PAUSE 명령어에 의하여 작업이 잠시 중단되어 있는 경우에 +를 누름으로써 작업을 중단할 수 있는 것이다.
 
■ 사용 예
사용자가 플로피 드라이브에 있는 디스크를 바꾸라는 메시지를 디스플레이하고, 사용자가 디스크를 바꾸기를 기다려야 하는 경우에는 PAUSE
명령어를 적절히 사용할 수 있다. 다음의 예는 다수의 플로피디스크에 있는 파일을 현행 디렉토리로 모두 복사하는 배치 프로그램을 작성한 예이다.
@echo off
:begin
copy a:*.*
echo Insert a new disk into drive A
echo If terminate the copy job, press +
pause
goto begin
 
위의 예에서 A드라이브에 있는 디스크 상의 모든 파일을 현행 디렉토리로 복사한 다음, 다른 디스크의 내용을 복사하기 위하여 새로운 디스크를 넣으라는
메시지와 작업을 끝내기 위하여 + 키를 누르라는 메시지를 디스플레이하고, 잠시 기다릴 것이다. 여기에서 사용자가 임의의 키를 누르면 작업은 다시
BEGIN으로 되돌아 갈 것이다. 이 배치 프로그램은 무한히 계속되는 특징을 갖는다. 이 배치 프로그램을 끝내기 위해서는 +를 누른 다음, Y를 누른다.
 
REM
이 명령어는 사용자가 배치 프로그램의 파일이나 CONFIG.SYS 파일에 주석문을 추가하기 위하여 사용하는 명령어로, MS-DOS에서는
REM으로 시작되는 모든 명령어 라인은 명령어로 인식하지 않기 때문에 실행되지 않는다. 세미콜론(;)도 동일한 효과를 갖는다.
 
■ 사용법
REM [comments]
혹은,
; [comments]
 
■ 옵션 및 매개변수
comments 주석문으로 사용할 문자열을 지정한다. 주석문에 사용되는 문자는 특별히 아스키로 제한되지 않는다. 즉, 확장 문자를 사용할 수 있다.
 
■ 사용상의 주의
☞ 주석문 디스플레이하기
REM 명령어는 주석문으로 지정된 문자열을 화면에 디스플레이하지 않는다. 주석문을 디스플레이하려면 배치 파일에서 ECHO 명령어를
사용하거나 CONFIG.SYS 파일에서 ECHO ON 명령어를 사용해야 한다.
 
☞ REM 사용시의 제한 사항
REM 명령어에서 사용되는 주석문의 문자는 특별히 제한되지 않는다. 즉, 확장 문자도 주석문의 문장에 사용할 수 있다. 그러나 배치
파일의 주석문에서는 입출력을 위한 반향 전환 기호( 혹은
 
☞ 공백 추가하기
비록 사용자가 배치 파일에 세로 공백을 디스플레이하기 위하여 주석문 없이 REM 명령어만 사용할 수 있지만, 비어있는 라인도 사용할
수 있다. 이것은 MS-DOS가 배치 프로그램을 처리할 때 공백 라인을 무시하여 처리하지 않기 때문이다.
 
■ 사용 예
다음의 예는 설명과 공백을 사용하는 배치 프로그램이다.
@echo off
rem This is batch program formats and checks new disks.
rem It is named CHECKNEW.BAT
rem
echo Insert a new disk in drive A:
pause
format a:/v
chkdsk a:
 
사용자가 CONFIG.SYS 파일에서 PROMPT 명령어 앞에 프롬프트를 설명하는 주석문을 추가하려면 다음과 같이 REM 명령어를 사용한다.
rem Set prompt to indicate current directory
prompt $p$g
 
장치 제어기를 메모리에 탑재하기 위하여 사용하는 DEVICE 명령어를 실행되지 않도록 지정하려면 다음 예와 같이 명령어의 맨 앞에
REM이나 세미콜론(;)을 추가한다.
rem device=c:dospower.exe
;device=c:dospower.exe
 
SET
이 명령어는 MS-DOS의 환경 변수를 설정하거나 변경하고, 설정된 환경 변수를 디스플레이하기 위하여 사용하는 것으로 프롬프트 상에서
사용하거나 배치 프로그램에서 사용하는 내부 명령어이다. 사용자는 일부 배치 프로그램의 동작을 통제하거나, MS-DOS나 MS-DOS
서브시스템이 나타나고 작동하는 방법을 결정하기 위하여 환경 변수를 사용한다. 일반적으로 SET 명령어는 사용자가 컴퓨터를 시동할 때마다
환경 변수를 설정하기 위하여 AUTOEXEC.BAT 파일에 사용한다. 따라서, 이 명령어를 프롬프트 명령어에 분류하지 않고 배치 파일
명령어로 분류한 것이다.
 
■ 사용법
SET [variable=[string]]
 
■ 옵션 및 매개변수
none 매개변수 없이 사용되면 현재의 환경 설정을 디스플레이한다. variable 사용자가 설정하거나 변경하고자
하는 변수를 지정한다. string 환경 변수에 지정될 변수값이나 문자열을 지정한다.
 
■ 사용상의 주의
☞ 현행 환경 설정을 디스플레이하기
사용자가 명령어 프롬프트 상에서 매개변수나 옵션이 없이 SET 명령어를 단독으로 사용하는 경우, MS-DOS는 현재 설정된 환경 변수
값을 디스플레이한다. MS-DOS에서 지정할 수 있는 환경 변수는 명령어 해석기의 위치를 지정하는 COMSPEC, 실행파일의 검색
경로를 지정하기 위한 PATH, 프롬프트의 디스플레이 방법을 지정하기 위하여 사용하는 PROMPT, 그리고 DIR 명령어를 이용하여
파일 목록을 열람할때의 옵션을 지정하기 위한 DIRCMD, 데이터를 임시 저장하기 위한 디스크 상의 공간을 지정하기 위한 TEMP
환경 변수 등이 있다. 이 외에도 응용 프로그램에 따라 필요한 환경 변수를 지정할 수 있다. 예를 들어, 사운드 카드의
경우에는 주소, 인터럽트 요청선을 지정하기 위하여 환경변수를 사용한다.
 
☞매개변수 사용하기
사용자가 SET 명령어를 사용하고 variable과 string에 대한 변수를 지정할 때, MS-DOS는 지정된 변수를 환경에 추가하고, string을 그 변수 값으로 사용한다.
만약, 이미 지정된 환경 변수가 있는 경우에는 새로 지정된 값이 기존의 환경 변수값을 대체한다. 만약, SET 명령어를 사용할 때 string없이 variable=만
단독으로 사용하면 MS-DOS는 해당 variable에 지정되어 있던 모든 환경 변수를 삭제한다.
 
☞ 배치 파일에 SET 사용하기
사용자는 배치 프로그램을 작성할 때 SET 명령을 사용하여 변수값을 설정할 수 있고, %0∼%9까지의 대체 변수와 같은 방식으로 사용할
수도 있다. 또, %0∼%9까지의 대체 변수값을 SET 명령어의 입력값으로 사용할수도 있다.
 
☞배치 파일에서의 환경 변수의 호출
사용자가 배치 파일에서 변수 값을 호출할 때, 사용자는 반드시 그 값을 퍼센트 기호(%)로 묶어야 한다. 예를 들어, 기존의 검색
경로를 지정한 PATH 환경변수를 호출하려면 %PATH%와 같은 방식으로 호출한다. 즉, %PATH%는 기존의 환경 변수를 string으로 사용한다.
MS-DOS에서는 이러한 환경 변수의 호출이 반드시 배치 프로그램만으로 한정되지 않고, 명령어 프롬프트 상에서도 이를 호출할수 있다.
 
☞ 환경 공간에 대한 SET의 효과
SET 명령을 입력한 뒤 다음과 같은 메시지가 나올 경우가 있다.
Out of environment space.
이러한 메시지는 정상적으로 변수 값을 설정하지 못했을 경우 혹은 환경을 저장할 공간이 충분하지 않은 경우에 나타나는 것으로
환경 공간을 확장해 주어야 한다. 환경 공간의 확장에 대한 자세한 사항은 본 장의 "프롬프트 명령어"에 있는 COMMAND 명령어를 참조하기 바란다.
 
■ 사용 예
C:INC 디렉토리를 INCLUDE 환경 변수로 설정하려면 다음과 같이 SET 명령어를 사용한다.
set include=c:inc
위의 예처럼 INCLUDE 환경 변수를 설정한 다음부터는 환경 변수 INCLUDE를 %로 묶어서 배치 파일에서 문자열 대신 사용할수 있다.
예를들어, 사용자가 INCLUDE 환경 변수와 관련된 디렉토리의 내용을 보기 위하여 배치 파일에 다음과 같은 명령어를 사용할 수 있다.
dir %include%
MS-DOS는 위의 예와 같은 명령어를 처리할 때, %includ% 대신에 C:INC를 대체한다. SET 명령어는 다음의 예에서 나타난 것처럼, 기존의 환경 변수에
새로운 환경 변수를 첨가하기 위하여 사용할수 있다. 다음의 예는 기존의 검색 경로를 지정한 환경 변수에 사용자가 지정한 디렉토리를
추가하는 내용을 담고 있는 배치 프로그램이다.
@echo off
rem ADDPATH.BAT adds a
new directory    rem
to the path environment variable
set path=%1;%path%
 
SHIFT
MS-DOS에서 배치 프로그램을 실행할 때 %0∼%9의 10개의 매개변수를 사용한다. 그러나 교체할 매개변수가 10개를 초과하는 경우에는 이를 한번에 지정할 수
없다. 이를 위하여 MS-DOS에서는 배치 프로그램에서 10개 이상의 매개변수를 사용할 수 있도록 SHIFT 명령어를 제공한다. 이 명령어는 배치 파일
내에 있는 교체할 수 있는 매개변수의 위치를 앞으로 이동하기 위하여 사용한다.
 
■ 사용법
SHIFT
 
사용상의 주의
 
SHIFT 명령어의 작동 방법
SHIFT 명령어는 각 매개변수를 선행자에 복사함으로써 %0에서 %9까지 교체 가능한 매개변수의 값을 변경한다. 즉, %1의 값은 %0에 복사되고,
%2의 값은 %1에 복사되는 식으로 계속된다. 이것은 매개변수의 모든 번호에서 같은 구동을 수행하는 배치 프로그램을 작성하는데 유용하다.
 
☞ 10개 이상의 매개변수 사용하기
사용자가 10개 이상의 매개변수를 받아들이는 배치 프로그램을 작성하는데 SHIFT 명령어는 매우 유용하게 사용된다. 만약, 사용자가 10개
이상의 매개변수를 명령어 라인에 지정한 경우 11번째에 지정한 매개변수는 SHIFT 명령어를 한번 실행할 때마다 %9로 전환될 것이다.
 
☞ SHIFT 매개변수의 되돌리기
직전에 사용한 매개변수를 다시 사용할 수는 없다. 즉, 매개변수 중에서 한번 SHIFT된 경우 첫번째 매개변수를 메모리에서 삭제하기
때문에 이를 다시 사용할 수 없다.
 
■ 사용 예
다음 예에서의 배치 프로그램은 SHIFT 명령어를 매개변수의 모든 번호에 사용하는 방법을 보여준다. 이것은 파일의 목록을
특정한 디렉토리에 복사한다. 매개변수는 그 디렉토리의 이름과 그 다음에 오는 파일명의 모든 번호이다.
@echo off
rem USERCOPY.BAT copies any number of files
rem to a directory
rem The command uses the following syntax:
rem usercopy dir file1 file2 . . . . .
set todir=%1
 
:getfile
shift
if "%1"=="" goto end
copy %1 %todir%
goto getfile
 
:end
set todir=
echo All done
pause
 
 
번호 제목 글쓴이 조회 추천 등록일
[공지] 강좌 작성간 참고해주세요 gooddew - - -
4380 윈 도 우| [실사] 윈도우 7 32비트 VHD 설치 방법! [11] 무월 896 19 08-23
4379 하드웨어| [팁] 프린터 상태 정보 오류 안뜨게 하는 법 [2] asklee 1000 4 08-23
4378 윈 도 우| winpe에서 startis[all]back를 이용한 탐색기 색 변경 [14] sunshine 609 14 08-23
4377 윈 도 우| [2탄] install.wim 누적 업데이트 + 드라이버 통합 하기 (D... [9] 무월 1378 28 08-21
4376 윈 도 우| [1탄] install.wim 누적 업데이트 통합 하기 [26] 무월 1873 45 08-19
4375 모 바 일| AirPrint 설정 및 호환 프린터 목록 [1] asklee 746 3 08-18
4374 윈 도 우| Windows Defender 방화벽 인/아웃바운드 허용/차단 추가 [20] 무월 2080 35 08-17
4373 소프트웨어| 중국어 하드 코딩 한글화 강좌 [8] 줄리아니 1071 20 08-16
4372 소프트웨어| 중국어 프로그램 한글화 팁 [8] 줄리아니 1203 16 08-14
4371 소프트웨어| LaunchBar boot.wim 적용 방법 [12] 무월 1546 35 08-13
4370 소프트웨어| (추가3) 배치파일 추가기능 extd.exe 사용 팁 [7] 지후빠 949 24 08-13
4369 소프트웨어| 중국어 프로그램 한글화 팁 [11] 줄리아니 1385 20 08-10
4368 소프트웨어| ESD 다중 이미지 단일 WIM 이미지 추출 방법! [12] 무월 1086 30 08-09
4367 소프트웨어| 크롬 하단 다운로드창 활성화 [11] 무월 2791 46 08-03
4366 소프트웨어| wim boot 관련 배치 파일 몇 가지 팁 [19] 지후빠 1460 29 08-03
4365 기 타| 포토샵 많이 좋아졌네요!! [3] 집에서뒹굴 2750 5 08-02
4364 모 바 일| [Tip] 인천공항 스마트패스 - 얼굴 인식으로 출국장 통과 앱 [5] asklee 1762 9 07-28
4363 소프트웨어| 다음 팟플레이어 광고[팝업] 차단 [12] 무월 3122 48 07-26
4362 윈 도 우| winpe 시작 화면 Shutdown 메뉴 수정 [10] sunshine 859 18 07-25
4361 소프트웨어| winpe 시스템 계정에서 Edge 상위버전 적용 [8] sunshine 566 15 07-24
XE1.11.6 Layout1.4.8