<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="http://rss.egloos.com/style/blog.xsl" type="text/xsl" media="screen"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
	<title>개발자로 먹고 살기</title>
	<link>http://tkword.egloos.com</link>
	<description>대한민국에 태어나,
컴퓨터공학을 전공하고,
개발현장에 나와있는 창꿍.
오늘은 또 어떤 일상이..</description>
	<language>ko</language>
	<pubDate>Sat, 23 Feb 2008 17:46:39 GMT</pubDate>
	<generator>Egloos</generator>
	<image>
		<title>개발자로 먹고 살기</title>
		<url>http://pds6.egloos.com/logo/200710/26/92/e0073992.jpg</url>
		<link>http://tkword.egloos.com</link>
		<width>80</width>
		<height>60</height>
		<description>대한민국에 태어나,
컴퓨터공학을 전공하고,
개발현장에 나와있는 창꿍.
오늘은 또 어떤 일상이..</description>
	</image>
  	<item>
		<title><![CDATA[ 데비안에서 ntfs 인식문제 ]]> </title>
		<link>http://tkword.egloos.com/1451073</link>
		<guid>http://tkword.egloos.com/1451073</guid>
		<description>
			<![CDATA[ 
  <br />
===================================<br />
<br />
<a href="http://packages.debian.org/unstable/otherosfs/ntfs-3g" target="_blank">http://packages.debian.org/unstable/otherosfs/ntfs-3g</a><br />
이곳에 들어가서<br />
<br />
fuse-utils_2.6.3-4_i386.deb<br />
libc6_2.5-4_i386.deb<br />
libfuse2_2.6.3-4_i386.deb<br />
libntfs-3g0_1.328-2_i386.deb<br />
ntfs-3g_1.328-2_i386.deb*<br />
tzdata_2007e-3_all.deb<br />
<br />
이렇게 6개를 받고 모두 깔았습니다.<br />
(첨에 ntfs-3g_xxx만 받아서 깔아봤더니 에러가 나면서 무슨 파일이 필요하다고 하더군요<br />
그래서 그거 받아서 깔려고해보니 또 뭐가 필요하다고.. 계속 그런식으로 하다보니 위의<br />
6개를 깔게 되었습니다. 일단 깔고 NTFS하드에 복사를 해보니 잘 됩니다. )<br />
<br />
참.. 위의 파일들을 모두 인스톨하고 /etc/fstab을 다음과같이 수정하였습니다.<br />
<br />
# WinXP (NTFS, 80G)<br />
# old =&gt; /dev/hda1 /mnt/c ntfs user,nls=cp949,utf8,umask=0222 0 0<br />
/dev/hda1 /mnt/c ntfs-3g defaults,locale=ko_KR.UTF-8 0 0<br />
<br />
ntfs를 ntfs-3g로<br />
nls를 locale로 바꾸면 되는군요.<br />
===================================<br />
재 마운트 시키자<br />
<code>&gt; sudo umount /media/hda1 /media/hda2<br />
&gt; sudo mount -a<br />
<br />
</code><a href="http://debianusers.org/jsboard/read.php?table=qna&amp;no=32730&amp;page=1&amp;o%5Bsc%5D=t&amp;o%5Bss%5D=ntfs&amp;o%5Bst%5D=a&amp;o%5Bat%5D=s&amp;o%5Bsct%5D=s&amp;o%5Bstt%5D=s">출처 : 데비안사용자 - 질문과 답변 게시판</a><br />
<br />
테스트 해봤으나 의존성 문제로 잘 되지 않는다.. 휴<br />
Sid 로 가야겠다. -.-<br />
<br/><br/>tag : <a href="/tag/데비안" rel="tag">데비안</a>,&nbsp;<a href="/tag/Debian" rel="tag">Debian</a>			 ]]> 
		</description>
		<category>Linux</category>
		<category>데비안</category>
		<category>Debian</category>

		<comments>http://tkword.egloos.com/1451073#comments</comments>
		<pubDate>Sat, 23 Feb 2008 13:21:54 GMT</pubDate>
		<dc:creator>창꿍</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 데비안 깔고 내가 한 일.. ]]> </title>
		<link>http://tkword.egloos.com/1293465</link>
		<guid>http://tkword.egloos.com/1293465</guid>
		<description>
			<![CDATA[ 
  <span style="color: rgb(204, 255, 255);">[ Debian GNU/Linux 4.0 r3 _</span><span style="font-weight: bold; color: rgb(204, 255, 255);">Etch </span><span style="color: rgb(204, 255, 255);">]</span><br />
<br />
0, 한영키 설정<br />
&nbsp;&nbsp;&nbsp; 데스크탑 - 기본설정 - 키보드 - [키배치]탭 -&gt; <br />
&nbsp;&nbsp;&nbsp; [더하기] - "Korea, Republic of" -- [위로] 올려주고 체크(v)하면, 한영키 바로먹힘.<br />
<br />
&nbsp; 삑소리 끄기 (콘솔에서 백스페이스 누를때 굉장히 거슬린다.. 빨리 끄자)<br />
&nbsp;&nbsp;&nbsp; 데스크탑 - 기본설정 - 소리 - 시스템소리 탭 : 벨소리 체크 푼다.<br />
<br />
<span style="font-weight: bold;"><br />
</span><span style="font-weight: bold; background-color: rgb(255, 255, 204);"></span>1. /etc/apt/sources.list 업데이트&nbsp; (mplayer, 코덱 패키지를 위해..)<br />
&nbsp;&nbsp;&nbsp; &gt; vi /etc/apt/sources.list<br />
<br />
&nbsp;&nbsp;&nbsp; 다음을 추가한다. <br />
<br />
&nbsp;&nbsp;&nbsp; <span style="color: rgb(255, 204, 187);">deb http://www.debian-multimedia.org stable main</span><br />
<br style="background-color: rgb(255, 255, 204);">&nbsp;&nbsp;&nbsp; &gt; apt-get update<br />
<pre class="wiki"><br />
2. GPG 서버에서 Marillat씨의 Key를 가져옴  ( http://debianusers.org/DebianWiki/wiki.php/Mplayer#s-2.2 )<br />
    $ gpg --keyserver hkp://wwwkeys.eu.pgp.net --recv-keys 1F41B907<br />
<br />
   apt 키 저장소에 추가하기<br />
    $ gpg --armor --export 1F41B907 | apt-key add -<br />
</pre><br />
3. 멀티미디어 환경 설치 <br />
&nbsp;&nbsp;&nbsp; &gt; apt-get install mplayer<br />
&nbsp;&nbsp;&nbsp; &gt; apt-get install w32codecs<br />
&nbsp;&nbsp;&nbsp; &gt; apt-get install mozilla-mplayer<br />
<br />
&nbsp; mp3 듣기 :<br />
&nbsp;&nbsp;&nbsp; &gt; apt-get install beep-media-player<br />
&nbsp;&nbsp;&nbsp; http://www.ubuntu.or.kr/wiki.php/BMP_Beep-Media-Player <br />
<br />
&nbsp; Adobe Flash Player Plugin 설치<br />
&nbsp;&nbsp;&nbsp; &gt; apt-get install libflash-mozplugin<br />
<br />
4. /boot/grub/menu.list 편집 : Default 부팅순서 변경<br />
<br />
<br />
<br />
<br/><br/>tag : <a href="/tag/리눅스" rel="tag">리눅스</a>,&nbsp;<a href="/tag/데비안" rel="tag">데비안</a>			 ]]> 
		</description>
		<category>Linux</category>
		<category>리눅스</category>
		<category>데비안</category>

		<comments>http://tkword.egloos.com/1293465#comments</comments>
		<pubDate>Tue, 15 Jan 2008 11:13:58 GMT</pubDate>
		<dc:creator>창꿍</dc:creator>
	</item>
	<item>
		<title><![CDATA[ How to handle NO_PUBKEY warning.. ]]> </title>
		<link>http://tkword.egloos.com/1293329</link>
		<guid>http://tkword.egloos.com/1293329</guid>
		<description>
			<![CDATA[ 
  다음 순서대로 하면, apt-get update 시 공개키 문제는 사라진다.<br />
<br />
<br />
<em><strong># apt-get install gnupg<br />
<br />
<br />
</strong></em><strong><em># gpg --keyserver wwwkeys.eu.pgp.net --recv-keys 07DC563D1F41B907<br />
<br />
<br />
</em></strong><strong><em># gpg --armor --export 07DC563D1F41B907 | apt-key add -</em></strong><br />
<br />
<br />
<br/><br/>tag : <a href="/tag/데비안" rel="tag">데비안</a>,&nbsp;<a href="/tag/Debian" rel="tag">Debian</a>,&nbsp;<a href="/tag/Linux" rel="tag">Linux</a>			 ]]> 
		</description>
		<category>Linux</category>
		<category>데비안</category>
		<category>Debian</category>
		<category>Linux</category>

		<comments>http://tkword.egloos.com/1293329#comments</comments>
		<pubDate>Tue, 15 Jan 2008 10:40:39 GMT</pubDate>
		<dc:creator>창꿍</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 오라클 tips ]]> </title>
		<link>http://tkword.egloos.com/1171308</link>
		<guid>http://tkword.egloos.com/1171308</guid>
		<description>
			<![CDATA[ 
  <span style="FONT-SIZE: 100%">/* 쿼리 처리속도 */<br>select sysdate from dual;<br>select * from idx_bo_tbl where manage_no = 'EM0000000500';<br>select sysdate from dual;<br><br><br><br></span>			 ]]> 
		</description>

		<comments>http://tkword.egloos.com/1171308#comments</comments>
		<pubDate>Fri, 21 Dec 2007 13:49:01 GMT</pubDate>
		<dc:creator>창꿍</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 시스템 성능 모니터와 함께하는 NT 튜닝 ]]> </title>
		<link>http://tkword.egloos.com/1129905</link>
		<guid>http://tkword.egloos.com/1129905</guid>
		<description>
			<![CDATA[ 
  <br />
<a title="" href="http://blog.naver.com/shean0?Redirect=Log&logNo=20023910652" target = "_new">http://blog.naver.com/shean0?Redirect=Log&logNo=20023910652</a>			 ]]> 
		</description>
		<category>Bookmark</category>

		<comments>http://tkword.egloos.com/1129905#comments</comments>
		<pubDate>Thu, 13 Dec 2007 02:11:47 GMT</pubDate>
		<dc:creator>창꿍</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 오라클 과 MS-SQL 함수 비교 ]]> </title>
		<link>http://tkword.egloos.com/1115112</link>
		<guid>http://tkword.egloos.com/1115112</guid>
		<description>
			<![CDATA[ 
  <br />
<a title="" href="http://onyx.egloos.com/910201" target = "_new">http://onyx.egloos.com/910201</a><br/><br/>tag : <a href="/tag/SQL" rel="tag">SQL</a>,&nbsp;<a href="/tag/오라클" rel="tag">오라클</a>			 ]]> 
		</description>
		<category>Bookmark</category>
		<category>SQL</category>
		<category>오라클</category>

		<comments>http://tkword.egloos.com/1115112#comments</comments>
		<pubDate>Mon, 10 Dec 2007 04:14:21 GMT</pubDate>
		<dc:creator>창꿍</dc:creator>
	</item>
	<item>
		<title><![CDATA[ SQL 쿼리 : 시간 제한 만료 !!  ]]> </title>
		<link>http://tkword.egloos.com/1101257</link>
		<guid>http://tkword.egloos.com/1101257</guid>
		<description>
			<![CDATA[ 
  시간이 꽤 걸리는(약 3분~5분) Stored Procedure의 경우,<br />
기본 제한시간인 30초를 넘기면 아래 에러가 발생한다.<br />
<br />
    "시간 제한이 만료되었습니다."<br />
<br />
Connection 개체의 CommandTimeout = 1000 으로 설정해주면 된다.<br />
			 ]]> 
		</description>
		<category>Programming</category>

		<comments>http://tkword.egloos.com/1101257#comments</comments>
		<pubDate>Fri, 07 Dec 2007 05:54:31 GMT</pubDate>
		<dc:creator>창꿍</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 배치파일 FAQ 200 ]]> </title>
		<link>http://tkword.egloos.com/1096502</link>
		<guid>http://tkword.egloos.com/1096502</guid>
		<description>
			<![CDATA[ 
  <br />
<a href="http://cafe.naver.com/hitommy.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=330" target=_new>http://cafe.naver.com/hitommy/330</a><br />
			 ]]> 
		</description>

		<comments>http://tkword.egloos.com/1096502#comments</comments>
		<pubDate>Thu, 06 Dec 2007 07:34:52 GMT</pubDate>
		<dc:creator>창꿍</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 날짜 계산하기 ]]> </title>
		<link>http://tkword.egloos.com/1096444</link>
		<guid>http://tkword.egloos.com/1096444</guid>
		<description>
			<![CDATA[ 
  배치파일에서 오늘 날짜를 구하는 방법은 상당히 간단하다. date라는 명령을 이용해서 구할 수도 있지만 간단히 %DATE%라는 환경 변수를 이용해서 구할 수도 있다. 물론 %DATE% 환경 변수는 모든 시스템에서 사용할 수 있는 것은 아니다. 그러나 XP 기반의 OS에서는 모두 사용할 수 있으므로 큰 문제는 없다고 본다. 명령행에서<br />
<br />
echo %DATE%&lt;/PRE&gt;<br />
명령을 실행해보면 알 수 있지만 %DATE%는 YYYY-MM-DD 형태로 날짜를 출력한다. 만약 출력되는 날짜 형식을 변경하고 싶다면 다음과 같은 간단한 배치 파일로 이 문제를 해결할 수 있다.<br />
<br />
[today.cmd]<br />
<br />
@echo off<br />
for /f "tokens=1-3 delims=- " %%A in ('echo %DATE%')<br />
do (set YY=%%A&amp;SET MM=%%B&amp;SET DD=%%C)<br />
<br />
echo %YY%, %MM%, %DD%<br />
&lt;/PRE&gt;<br />
만약 배치 파일에서 어제나 내일의 날짜를 구하고 싶은 경우에는 어떻게 할까? %DD%에 서 하루만 빼면 될 것 같지만 사실 그리 간단하지는 않다. 생각해보면 쉽다. 오늘 날짜가 2월 2일이라면 %DD%에서 하루만빼면된다. 그러나 2월 1일이라면 어제는 1월 31일이므로 %MM%에서도 1를 빼야한다. 만약 1월 1일이라면 어떻게 될까?이때는 %DD%, %MM%, %YY%에서 1을 빼야한다.<br />
<br />
더우기 이렇게 계산해도 오류가 발생한다. 그 이유는 3월1일을 생각해보면 쉽다. 3월 1일에서 하루를 빼면 2월 28일이 되지만 4년 마다 한번씩 2월 29일이된다. 즉 윤년까지계산해야 한다는 점이다. 따라서 배치파일에서 어제의 날짜를 계산하는 것은 조금 복잡한 과정을 거쳐야 한다. 다음 어제의 날짜를계산하는 배치 파일이다.<br />
<br />
[yesterday.cmd]<br />
<br />
@echo off<br />
for /f "tokens=1-3 delims=- " %%A in ('echo %DATE%')<br />
do (set YY=%%A&amp;SET MM=%%B&amp;SET DD=%%C)<br />
<br />
set /a DD=1%DD%-101<br />
set /a MM=1%MM%-100<br />
<br />
if %DD% GTR 0 goto end<br />
set /a MM=%MM%-1<br />
<br />
if %MM% GTR 0 goto leap<br />
<br />
set /a DD=31<br />
set /a MM=12<br />
set /a YY=%YY%-1<br />
REM echo %YY%, %MM%, %DD% -&gt; 2005, 12, 31<br />
goto end<br />
<br />
:leap<br />
set /a TT=%YY%/4<br />
set /a TT=%TT%*4<br />
if not %YY% equ %TT% goto mon%MM%<br />
set /a DD=29<br />
goto end<br />
<br />
:mon1<br />
:mon3<br />
:mon5<br />
:mon7<br />
:mon8<br />
:mon10<br />
set /a DD=31<br />
goto end<br />
<br />
:mon2<br />
set /a DD=28<br />
goto end<br />
<br />
:mon4<br />
:mon6<br />
:mon9<br />
:mon11<br />
set /a DD=30<br />
goto end<br />
<br />
:end<br />
set /a DD=%DD% + 100<br />
set DD=%DD:~1,2%<br />
set /a MM=%MM% + 100<br />
set MM=%MM:~1,2%<br />
<br />
echo %YY%, %MM%, %DD%<br />
&lt;/PRE&gt;<br />
for /f "tokens=1-3 delims=- " %%A in ('echo %DATE%')<br />
do (set YY=%%A&amp;SET MM=%%B&amp;SET DD=%%C)&lt;/PRE&gt;%DATE% 환경 변수에서 년월일을 %YY%, %MM%, %DD%로 분리하는 루틴이다. echo %DATE%를 실행한 결과를 tokens과 delims를 이용해서 %%A, %%B, %%C로 저장하고 이 값을 다시 %YY%, %MM%, %DD%로 저장하는 순환문이다.<br />
<br />
set /a DD=1%DD%-101<br />
set/a MM=1%MM%-100&lt;/PRE&gt;조금 이해가 가지 않는 문장일 수 있다. 사실 set 명령을 이용하면 간단한사칙 연산이 가능해진다. 그런데 문제는 %DD%나 %MM%은 01, 02처럼 숫자앞에 0이 추가될 수 있다. 이 경우%DD%-1과 같은 방법으로 연산을 수행하면 숫자로 처리되지 않고 문자로 처리되기 때문에 1을 빼는 것이 아니라 한 문자를삭제하게된다. 한 예로 %DD%가 01이고 이 상태에서 %DD%-1을 수행하면 그 결과는 0이된다. 다음 내용을test.cmd로 저장한 후 그 결과를 시험해보면 쉽게 알 수 있다.<br />
@echo off<br />
set DD=01<br />
set /a DD=%DD%-1<br />
echo %DD%&lt;/PRE&gt;<br />
따 라서 이러한 문제를 피하고 %DD%와 %MM%에서 선행되는 0을 제거하기위해 1%DD%-101과 1%MM%-100을 사용한것이다. 여기서 /a는 계산된 결과를 의미한다. 즉 %DD%가 02이라면 윗식은 102-101=1이므로 최종적으로 %DD%에는0이 제거된 1이라는 값이 저장된다. %DD%의 경우 101을 빼지만 %MM%에서는 100을 뺀다. 그 이유는 어제의 날짜를계산하기위해서는 %DD%에서는 1을 빼야하지만 %MM%의 경우 단지 선행되는 0만 제거하면 되기때문이다.<br />
<br />
if %DD% GTR 0 goto end<br />
set/a MM=%MM%-1&lt;/PRE&gt;계산된 날짜가 0보다 크면 end로 분기한 후 %YY%, %MM%, %DD%를반환한다. 이러한 경우는 보통 2월 2일처럼 1일 이외의 모든 경우에 해당된다. 만약 2월 1일이라면 어제는 1월 31일이므로월에서 다시 1을 빼야한다. set /a MM=%MM%-1는 월에서 1을 빼는 과정이며 이전 과정과는 달리 1%MM%-101처럼사용하지 않은 이유는 전단계에서 %MM%을 숫자로 변환했기때문이다.<br />
<br />
if %MM% GTR 0 goto leap<br />
<br />
set /a DD=31<br />
set /a MM=12<br />
set /a YY=%YY%-1<br />
gotoend&lt; /PRE&gt;%MM%가 0보다 크면 윤년 계산으로 분기한다. 0인 경우는 1월 1일에 발생한다. 1월 1일의어제는 전년도 12월 31일이므로 %DD%를 31, %MM%를 12, %YY%는 %YY%-1로 설정한 후 end로 분기한다.<br />
<br />
:leap<br />
set /a TT=%YY%/4<br />
set /a TT=%TT%*4<br />
if not %YY% equ %TT% goto mon%MM%<br />
set /a DD=29<br />
gotoend&lt; /PRE&gt;윤년을 계산하는 부분이다. 루틴이 조금 이상할 수 있지만 원리는 간단하다. %YY%/4는 현재 년도를4로 나눈다. 즉 2006을 4로 나누면 501.5가 나오지만 .5는 잘려진다(4NT의 경우 501.5가 나오며 따라서 별도의절단 함수를 사용해야 한다). 따라서 첫번째 %TT%에는 501이 저장된다. 이 값에 다시 4를 곱하면 2004가 나오며,2004는 윤년에 해당된다. 마지막으로 %YY%(2006)이 윤년(2004)인지 검사해서 윤년이 아닌 경우에는mon%MM%(mon1)로 분기하고 윤년인 경우에는 %DD%를 29로 설정한 후 end로 분기한다.<br />
<br />
:mon1<br />
:mon3<br />
:mon5<br />
:mon7<br />
:mon8<br />
:mon10<br />
set /a DD=31<br />
goto end<br />
<br />
:mon2<br />
set /a DD=28<br />
goto end<br />
<br />
:mon4<br />
:mon6<br />
:mon9<br />
:mon11<br />
set /a DD=30<br />
gotoend&lt; /PRE&gt;윤년이 아닌 경우에 큰달과 작은달, 2월을 설정하는 부분이다. 작은달의 경우 %DD%를 30일로설정하며, 큰달의 경우 %DD%를 31일로 설정한다. 2월의 경우 윤년이 아니면 28일까지 있으므로 %DD%를 28로 설정한다.<br />
<br />
:end<br />
set /a DD=%DD% + 100<br />
set DD=%DD:~1,2%<br />
set /a MM=%MM% + 100<br />
setMM =%MM:~1,2%&lt;/PRE&gt;이전 단계에서 계산을 위해 %DD%와 %MM%를 숫자로 변한했다. 이 경우 1,2처럼 숫자앞에 선행하는 0이 없으므로 선행하는 0을 샆입하는 루틴이다. 만약 %DD%가 1이라면 %DD%에는 101이저장된다. 아울러 두번째 set 명령의 DD=%DD:~1,2%의 의미는 %DD% 변수의 1번째 자리부터 2개의 문자열을복사(~)하라는 뜻이다. 만약 DD=%DD:~0,2%를 사용한다면 0번째 자리부터 2개의 문자열을 복사하므로 20이 결과값이된다.<br />
<br />
다운로드: 배치 파일의 작성에 익숙하지 않은 사용자는 다음 링크에서 배치 파일을 다운받을 수 있다. 압축 파일에는 현재의 날짜를 출력하는 today.cmd와 어제의 날짜를 출력하는 yesterday.com가 포함되어 있다.<br />
<br />
			 ]]> 
		</description>
		<category>Batch File</category>

		<comments>http://tkword.egloos.com/1096444#comments</comments>
		<pubDate>Thu, 06 Dec 2007 07:25:50 GMT</pubDate>
		<dc:creator>창꿍</dc:creator>
	</item>
	<item>
		<title><![CDATA[ 배치파일 만들기 ]]> </title>
		<link>http://tkword.egloos.com/1096305</link>
		<guid>http://tkword.egloos.com/1096305</guid>
		<description>
			<![CDATA[ 
  <div><span style="font-size: 37pt;"><font color="blue" face="돋움" size="5"><b>배치 파일 명령어</b></font></span><font color="blue" size="5"><b> </b></font></div><div><font face="바탕">배치 프로그램이란 MS-DOS에서 실행 가능한 명령어를 순차적으로 처리하기 위하여 MS-DOS 명령어를 모아놓은 아스키 파일로, 일반적으로 BAT 확장명을 갖는다. 배치 프로그램은 흔히 배치 파일이라고도 한다.</font> </div><div><font face="바탕">배치 파일에서 사용할 수 있는 명령어는 MS-DOS에서 사용할 수 있는 모든 내부 외부명령어, 배치 파일 전용 명령어로 구분된다. 배치 파일 전용 명령어란 프롬프트 상에서는 사용할 수 없고 배치 파일에서만 사용할수 있는 명령어를 의미한다. 배치 파일에서는 BREAK, REM, SET 등 프롬프트 혹은 CONFIG.SYS 파일에서도 사용할수 있는 공용 명령어와 2개의 특수 문자(@, ;)를 사용할 수 있다.</font> </div><div><font face="바탕">다음은 MS-DOS에서 사용되는 배치 프로그램 전용 명령어이다. </font></div><div><font face="돋움">Call</font> <font face="돋움">Choice</font> <font face="돋움">Echo</font> </div><div><font face="돋움">For</font> <font face="돋움">Goto</font> <font face="돋움">If</font> </div><div><font face="돋움">Pause</font> <font face="돋움">Rem</font> <font face="돋움">Shift</font> </div><div><font face="바탕">SET 명령어는 프롬프트 상에서도 사용할 수 있는 명령어지만 주로 배치 프로그램에서 많이 사용되기 때문에 "</font><font face="돋움">프롬프트 명령어</font>"<font face="바탕">에 포함하지 않고, 배치 파일 명령어에서 설명하기로 한다. 또한, REM 명령어도 CONFIG.SYS에서도 사용할 수 있는 명령어이지만 배치 파일 명령어에서 설명하기로 한다.</font> </div><div><span style="font-size: 18pt;"><font color="green" face="돋움" size="5">CALL</font></span> </div><div><font face="바탕">배치 프로그램에서는 COM이나 EXE 확장자를 가진 실행 파일은 해당 파일 이름을입력함으로써 실행시킬 수 있다. 그러나 배치 프로그램은 이러한 방법을 사용하여 실행할 수 없다. 따라서 MS-DOS에서는 배치프로그램을 실행하는 도중에 다른 배치 프로그램을 실행하기 위한 특별한 명령어를 준비하고 있다. 배치 프로그램에서 다른 배치프로그램을 호출하기 위하여 사용되는 명령어는 CALL로써, 해당 배치 프로그램을 종료하지 않고 다른 배치 프로그램을 실행하기위하여 사용한다.</font> </div><div><font face="바탕">배치 프로그램 안에서 다른 배치 프로그램을 호출할 경우에는 반드시 BAT 확장자를생략하여야 한다. 즉, 배치 프로그램 안에서 실행 파일을 실행하기 위해서는 실행 프로그램의 이름만 입력하거나 확장자를 포함할 수있었지만 배치 프로그램에서는 반드시 호출할 배치 프로그램의 파일 이름만 지정하여야 하는 것이다.</font> </div><div><font face="굴림"><b>■ 사용법</b></font> </div><div><font face="돋움"><b>CALL </b></font><font face="바탕"><b>[[</b></font><font face="바탕"><b><i>drive</i></b></font><font face="돋움"><b>:</b></font><font face="바탕"><b>][</b></font><font face="바탕"><b><i>path</i></b></font><font face="바탕"><b>]]</b></font><font face="돋움"><b> </b></font><font face="바탕"><b><i>filename</i></b></font><font face="돋움"><b> </b></font><font face="바탕"><b>[</b></font><font face="바탕"><b><i>batch-para</i></b></font><font face="바탕"><b>]</b></font> </div><div><font face="굴림"><b>■ 옵션 및 매개변수</b></font> </div><div><font face="바탕">[</font><font face="바탕"><i>drive</i></font><font face="바탕">:][</font><font face="바탕"><i>path</i></font><font face="바탕">] </font><font face="바탕"><i>filename</i></font> <font face="바탕">실행할 배치 파일의 경로와 이름을 지정한다. CALL 명령어를 사용하여 실행할 배치 파일은 반드시 BAT 확장자를 갖는 파일이어야 한다.</font> </div><div><font face="바탕"><i>batch-para</i></font> <font face="바탕">배치 파일을 실행하기 위한 모든 변수를 지정한다. 지정할 수 있는 변수는 매개변수와 옵션을 포함한다.</font> </div><div><font face="굴림"><b>■ 사용상 주의</b></font> </div><div><font face="궁서체">☞ batch-para 사용하기</font> </div><div><font face="바탕"><i>batch-para</i></font><font face="바탕">는 배치 파일에 전달할 수 있는 모든 정보를 포함할 수 있는데, 여기에는 옵션과 파일명, 그리고 %1∼%9까지의 변경할 수 있는 매개변수와 %band%와 같은 변수가 포함된다.</font> </div><div><font face="궁서체">☞ 파이프(|)와 방향 전환 기호(&gt;)의 사용</font> </div><div><font face="바탕">CALL 명령어에서는 파이프(pipes: |)와 방향 전환을 위한 방향 전환 기호(redirection symbols:&gt;, &lt;, &gt;&gt;, &lt;&lt;)를 사용할 수 없다.</font> </div><div><font face="궁서체">☞ 반복적인 CALL 만들기</font> </div><div><font face="바탕">CALL 명령어를 사용하여 자신의 배치 파일을 호출함으로써 반복적인 배치 파일을 만들 수있다. 이 경우처럼 반복적인 배치 파일을 만드는 경우에는 반드시 해당 배치 파일을 끝낼 수 있도록 설계되어야만 한다. 그렇지않으면 무한 루프로 되어 해당 배치 파일을 영원히 끝나지 않게 된다. </font></div><div><font face="굴림"><b>■ 사용 예</b></font> </div><div><font face="바탕">HWPCHECK.BAT 파일을 다른 배치 파일에서 실행시키고자 한다면, 해당 배치 파일에 다음을 포함시킨다.</font> </div><div><font face="바탕"><i>call hwpcheck</i></font> </div><div><font face="바탕">위의 예에서 현재 실행 중인 배치 프로그램에서 2개의 매개변수를 받은 다음 이를 실행할 배치 프로그램에 전달하고자 한다면 다음과 같이 뒤에 매개변수를 할당한다.</font> </div><div><font face="바탕"><i>call hwpcheck %1 %2</i></font> </div><div><span style="font-size: 18pt;"><font color="green" face="돋움" size="5">CHOICE</font></span> </div><div><font face="바탕">이 명령어는 GOTO 명령어를 사용하여 다중 분기문을 작성하기 위하여 사용하는 것으로, 일반적으로 다중 배치 프로그램을 작성하기 위하여 사용되는 배치 프로그램 명령어이다.</font> </div><div><font face="바탕">이 명령어는 배치 프로그램에서 사용자가 지정한 프롬프트 상태를 유지하고 있다가 지정된시간이 경과되거나 지정된 문자를 지정하면 다음 명령어를 실행한다. 이 경우 CHOICE 명령어는 에러 수준 종료코드를 운영체제에 돌려주는데, 종료 코드와 GOTO 명령어를 이용하여 작업을 세분할 수 있다.</font> </div><div><font face="굴림"><b>■ 사용법</b></font> </div><div><font face="돋움"><b>CHOICE </b></font><font face="바탕"><b>[</b></font><font face="돋움"><b>/C</b></font><font face="바탕"><b>[</b></font><font face="돋움"><b>:</b></font><font face="바탕"><b>]</b></font><font face="바탕"><b><i>choices</i></b></font><font face="바탕"><b>]</b></font><font face="돋움"><b> </b></font><font face="바탕"><b>[</b></font><font face="돋움"><b>/N</b></font><font face="바탕"><b>]</b></font><font face="돋움"><b> </b></font><font face="바탕"><b>[</b></font><font face="돋움"><b>/S</b></font><font face="바탕"><b>]</b></font><font face="돋움"><b> </b></font><font face="바탕"><b>[</b></font><font face="돋움"><b>/T</b></font><font face="바탕"><b>[</b></font><font face="돋움"><b>:</b></font><font face="바탕"><b>]</b></font><font face="바탕"><b><i>c,nn</i></b></font><font face="바탕"><b>]</b></font><font face="돋움"><b> </b></font><font face="바탕"><b>[</b></font><font face="바탕"><b><i>text</i></b></font><font face="바탕"><b>]</b></font> </div><div><font face="굴림"><b>■ 옵션 및 매개변수</b></font> </div><div><font face="바탕"><i>text</i></font> <font face="바탕">사용자가 선택하도록 기다리는프롬프트 앞에 출력하고자 하는 문자열을 지정한다. 만약, 프롬프트 앞에 디스플레이될 문자열의 일부로 옵션 부호(/)를 사용하려면따옴표를 사용해야 한다. 문자열을 지정하지 않는 경우에는 선택할 프롬프트만 디스플레이한다.</font> </div><div><font face="돋움"><b>/c</b></font><font face="바탕">[:]</font><font face="바탕"><i>choices</i></font> <font face="바탕">프롬프트로 선택할 수 있는 문자를 지정한다. 다수의 문자를 지정하는 경우에는 콤마(.)를 분리 문자로 사용하며, 지정한 문자는괄호안에 나타나고 물음표 다음에 디스플레이된다. /c 옵션을 지정하지 않는 경우 YN을 디폴트 값으로 사용한다. 콜론(:)은선택적으로 생략할 수 있다.</font> </div><div><font face="돋움"><b>/n</b></font> <font face="바탕">사용자가 항목을 선택하도록대기하는 프롬프트가 디스플레이되지 않도록 지정하기 위하여 사용한다. 그러나 프롬프트 앞의 문자열은 디스플레이된다. 만약, /n옵션을 지정하지 않으면 CHOICE 명령어 라인에 지정한 선택 문자는 유효하다.</font> </div><div><font face="돋움"><b>/s</b></font> <font face="바탕">대 소문자를 구분하여 받아들이도록 지정하기 위하여 사용하는 옵션이다. 만약, /s 옵션을 지정하지 않으면 사용자가 지정한 선택 문자의 대 소문자를 구분하지 않고 모두 받아 들인다.</font> </div><div><font face="돋움"><b>/t</b></font><font face="바탕">[:]</font><font face="바탕"><i>c,nn</i></font> <font face="바탕">사용자가 선택 문자를 지정하지 않을 때 디폴트로 선택될 문자와 기다리는 시간을 지정한다. </font></div><div><font face="바탕"><i>c</i></font> <font face="바탕">사용자가 선택 문자를 지정하지 않을 때 디폴트로 선택될 문자를 지정하고, 이 문자는 /c 옵션에서 지정한 선택 문자 안에 있는 것이어야 한다.</font> </div><div><font face="바탕"><i>nn</i></font> <font face="바탕">c 값을 디폴트로 선택하기 전에 대기할 프롬프트 시간을 지정한다. 지정할 수 있는 값의 유효 범위는 0∼99 값의 범위에서 초 단위로 지정한다. 만약, 0초를 지정하면 항상 디폴트 값이 사용된다.</font> </div><div><font face="굴림"><b>■ 사용상의 주의</b></font> </div><div><font face="궁서체">☞ 작업을 분할하기</font> </div><div><font face="바탕">CHOICE 명령어는 작업을 분할하기 위하여 사용한다. 즉, CONFIG.SYS 에서는다중 부트 분할을 만들어 사용자가 원하는 시스템 구성으로 컴퓨터를 시작할 수 있다. AUTOEXEC.BAT에서는 이 명령어를사용하여 다중 환경으로 구성할 수 있다.</font> </div><div><font face="바탕">CHOICE 명령어를 사용한 다중 부트 분할에 대해서는 다음에 설명할 "</font><font face="돋움">사용 예</font>"<font face="바탕">를 참조하기 바란다.</font> </div><div><font face="궁서체">☞ CHOICE의 메시지</font> </div><div><font face="바탕">다음은 배치 프로그램에서 CHOICE 명령어를 사용하는 방법과 그에 따른 메시지를 나타낸다.</font> </div><div><font face="바탕"><b>CHOICE 명령어에 선택 문자만을 지정한 경우</b></font> </div><div><font face="바탕">명령어 줄</font> <font face="바탕"><i>choice /c:ync</i></font> </div><div><font face="바탕">메시지</font> <font face="바탕">[</font><font face="돋움">Y,N,C</font><font face="바탕">]</font><font face="돋움">?</font> </div><div><font face="바탕"><b>CHOICE 명령어에 선택 문자와 문자열을 지정한 경우</b></font> </div><div><font face="바탕">명령어 줄</font> <font face="바탕"><i>choice /c:ync Yes, No, or Continue</i></font> </div><div><font face="바탕">메시지</font> <font face="돋움">Yes, No, or Continue </font><font face="바탕">[</font><font face="돋움">Y,N,C</font><font face="바탕">]</font><font face="돋움">?</font> </div><div><font face="바탕"><b>CHOICE 명령어에 프롬프트를 생략하는 /n 옵션을 사용한 경우</b></font> </div><div><font face="바탕">명령어 줄</font> <font face="바탕"><i>choice /n Yes, No, or Continue?</i></font> </div><div><font face="바탕">메시지</font> <font face="돋움">Yes, No, or Continue?</font> </div><div><font face="바탕"><b>CHOICE 명령어에 /t 옵션을 사용한 경우</b></font> </div><div><font face="바탕">명령어 줄</font> <font face="바탕"><i>choice /c:ync /t:y,5</i></font> </div><div><font face="바탕">메시지</font> <font face="바탕">[</font><font face="돋움">Y,N,C</font><font face="바탕">]</font><font face="돋움">?</font> </div><div><font face="바탕">위 의 예에서 만약 5초 이내에 선택 문자 중에서 아무키라도 누르지 않으면 CHOICE는자동으로 Y를 선택하고 종료 코드 값으로 1을 운영 체제에 넘겨준다. 5초 이내에 선택 문자를 누르면 CHOICE는 선택한 값에대응되는 종료 코드를 넘겨준다.</font> </div><div><font face="궁서체">☞ 종료 코드</font> </div><div><font face="바탕">CHOICE 명령어는 실행을 종료한 뒤 에러 수준 종료 코드를 운영 체제에 돌려주는데, 사용자는 종료 코드를 이용하여 다중 분기문을 작성할 수 있다.</font> </div><div><font face="바탕">다음은 CHOICE가 운영 체제에 돌려주는 종료 코드에 관한 설명이다.</font> </div><div><font face="돋움">0</font> <font face="돋움">배치 프로그램을 중단하기 위하여 키보드 상에서 &lt;Ctrl&gt;+&lt;BREAK&gt; 혹은 &lt;Ctrl&gt;+&lt;C&gt;를 눌렀다.</font> </div><div><font face="돋움">1</font> <font face="돋움">사용자가 첫번째 선택 문자를 선택하였다.</font> </div><div><font face="돋움">2</font> <font face="돋움">사용자가 두번째 선택 문자를 선택하였다.</font> </div><div><font face="돋움">3</font> <font face="돋움">사용자가 세번째 선택 문자를 선택하였다.</font> </div><div><font face="돋움">.</font> <font face="돋움">.</font> </div><div><font face="돋움">.</font> <font face="돋움">.</font> </div><div><font face="돋움">255</font> <font face="돋움">에러가 발생하였다.</font> </div><div><font face="바탕">종료 코드를 이용하는 방법에 관한 자세한 사항은 IF 명령어를 참조하거나, 다음에 설명할 "</font><font face="돋움">사용 예</font>"<font face="바탕">를 참조하기 바란다.</font> </div><div><font face="굴림"><b>■ 사용 예</b></font> </div><div><font face="바탕">컴퓨터를 켤 때 사용자가 원하는 경우에 C드라이브에 있는 파일들의 단편화를 제거하는프로그램인 DEFRAG를 실행하도록 설정하려면 AUTOEXEC.BAT 파일에 다음과 같은 내용을 추가한다. 만약, 다른 명령어를지정하여 사용하고자 한다면 DEFRAG 대신에 원하는 명령어를 지정한다.</font> </div><div><font face="바탕"><i>choice Defrag drive /t:n,5</i></font> </div><div><font face="바탕"><i>if errorlevel 255 goto error</i></font> </div><div><font face="바탕"><i>if errorlevel 2 goto SkipDefrag</i></font> </div><div><font face="바탕"><i>defrag c: /f/se/b</i></font> </div><div><font face="바탕"><i>:error</i></font> </div><div><font face="바탕"><i>echo Error Found!</i></font> </div><div><font face="바탕"><i>pause</i></font> </div><div><font face="바탕"><i>:SkipDefrag</i></font> </div><div><font face="바탕">만약 5초 이내에 Y를 누르면 단편화 제거 프로그램이 실행되고 CHOICE는 1의 값을종료 코드 값으로 운영 체제에 돌려준다. 5초 이내에 Y키를 누르지 않거나 N키를 누르면 C 드라이브의 단편화 제거 프로그램은실행되지 않는다. 만약, 단편화 제거 프로그램이 실행된다면 /b 옵션을 사용하였기 때문에 프로그램이 종료됨과 동시에 컴퓨터를재시동하게 된다.</font> </div><div><font face="바탕">다음의 배치 프로그램의 예는 CHOICE 명령어를 이용하여 HWP, Windows,MS-DOS 에디터, MS-DOS의 백업 프로그램 중에서 하나를 선택하는 방법을 보여준다. 단, 위의 모든 실행 프로그램은하드디스크에 설치되어 있고, PATH 명령어에 경로가 추가되어 있다고 가정한다.</font> </div><div><font face="바탕"><i>@echo off</i></font> </div><div><font face="바탕"><i>cls</i></font> </div><div><font face="바탕"><i>echo 1 HWP</i></font> </div><div><font face="바탕"><i>echo 2 Windows</i></font> </div><div><font face="바탕"><i>echo 3 MS-DOS Editor</i></font> </div><div><font face="바탕"><i>echo 4 Backup</i></font> </div><div><font face="바탕"><i>choice /c:1234</i></font> </div><div><font face="바탕"><i>if errorlevel 255 goto Exit</i></font> </div><div><font face="바탕"><i>if errorlevel 4 goto Backup</i></font> </div><div><font face="바탕"><i>if errorlevel 3 goto Edit</i></font> </div><div><font face="바탕"><i>if errorlevel 2 goto Win</i></font> </div><div><font face="바탕"><i>if errorlevel 1 goto Hwp</i></font> </div><div><font face="바탕"><i>:Backup</i></font> </div><div><font face="바탕"><i>c:\dos\msbackup</i></font> </div><div><font face="바탕"><i>goto Exit</i></font> </div><div><font face="바탕"><i>:Edit</i></font> </div><div><font face="바탕"><i>edit</i></font> </div><div><font face="바탕"><i>goto Exit</i></font> </div><div><font face="바탕"><i>:Win</i></font> </div><div><font face="바탕"><i>c:\windows\win</i></font> </div><div><font face="바탕"><i>goto Exit</i></font> </div><div><font face="바탕"><i>:Hwp</i></font> </div><div><font face="바탕"><i>c:\hwp21\hwp</i></font> </div><div><font face="바탕"><i>:Exit</i></font> </div><div><span style="font-size: 18pt;"><font color="green" face="돋움" size="5">ECHO</font></span> </div><div><font face="바탕">이 명령어는 배치 프로그램에서 필요한 메시지를 디스플레이하기 위하여 사용한다. 즉, 배치프로그램에서 작업 중 텍스트로 이루어진 메시지를 스크린에 디스플레이하는데 사용된다. 이 외에도 배치 프로그램에 지정되어 있는명령어의 반향을 켜거나 끄도록 설정하기 위하여 사용한다. 예를 들어, 다수의 명령어 행을 포함하고 있는 경우에는 명령어 반향을끄기 위하여 배치 프로그램의 첫 행에 "</font><font face="돋움">echo off</font>"<font face="바탕">를 추가한다.</font> </div><div><font face="굴림"><b>■ 사용법</b></font> </div><div><font face="돋움"><b>ECHO </b></font><font face="바탕"><b>[</b></font><font face="돋움"><b>ON|OFF</b></font><font face="바탕"><b>]</b></font> </div><div><font face="돋움"><b>ECHO </b></font><font face="바탕"><b>[</b></font><font face="바탕"><b><i>message</i></b></font><font face="바탕"><b>]</b></font> </div><div><font face="굴림"><b>■ 옵션 및 매개변수</b></font> </div><div><font face="돋움"><b>on</b></font><font face="돋움">|</font><font face="돋움"><b>off</b></font> <font face="바탕">명령어 반향의 특징을 켤 것인지 아니면 끌 것인지를 결정한다. 현재의 ECHO 설정을 디스플레이하기 위해서는, 매개변수 없이 사용한다.</font> </div><div><font face="바탕"><i>message</i></font> <font face="바탕">배치 프로그램을 실행할 때 화면에 디스플레이될 문자열을 타이프한다. </font></div><div><font face="굴림"><b>■ 사용상의 주의</b></font> </div><div><font face="궁서체">☞ ECHO 명령어에 메시지 사용하기</font> </div><div><font face="바탕">ECHO 명령어는 ECHO가 OFF로 설정되어 있는 경우에 매우 유용하다. 즉, 다른명령어를 디스플레이하지 않고 몇 줄의 메시지를 디스플레이하기 위하여 배치 프로그램에서 ECHO OFF 명령어를 사용한 다음,필요한 메시지를 연속적으로 ECHO 명령어 뒤에 기록한다.</font> </div><div><font face="궁서체">☞ 명령어 감추기</font> </div><div><font face="바탕">다수의 명령어를 포함하는 배치 프로그램인 경우 ECHO OFF 명령어를 사용하여 배치프로그램에 포함되어 있는 명령어가 화면에 나타나지 않는다. 만약, 배치 파일에 포함된 프롬프트를 디스플레이하려면 ECHO ON명령어를 사용한다.</font> </div><div><font face="궁서체">☞ 한 줄의 명령어 라인만 감추기</font> </div><div><font face="바탕">ECHO OFF 명령어를 사용할 경우에는 다음에 ECHO ON 명령어가 나타날 때 까지배치 프로그램 안에서는 계속 유효하다. 그러나, ECHO OFF 명령어는 프롬프트 상에 반향되어 나타난다. 만약, ECHOOFF 명령어 자체를 반향하지 않도록 하려면 at 기호(@)를 사용하여야 한다. 즉, 배치 프로그램의 맨 위에 "@ECHOOFF"라고 입력하면 프롬프트 상에 ECHO OFF라는 명령어도 디스플레이되지 않는다.</font> </div><div><font face="궁서체">☞ @와 콜론(:), 세미콜론(;), REM 명령어와의 비교</font> </div><div><font face="바탕">한 줄의 명령어 라인을 실행하지 않기 위해서는 콜론(:)과 세미콜론(;), REM 명령어를사용한다. 이 명령어나 기호는 CONFIG.SYS와 배치 프로그램에서만 사용하는 명령어로써 콜론(:)은 해당 명령어 라인을GOTO 명령어에 의해 찾아갈 레이블로 인식하기 때문에 명령어를 실행하지 않고, 세미콜론(;)과 REM 명령어는 MS-DOS에서주석문을 달기 위하여 사용되는 명령어이기 때문에 세미콜론이나 REM이 명령어 라인의 맨 앞에 오면 해당 명령어 라인은MS-DOS가 실행하지 않는다.</font> </div><div><font face="바탕">따라서, @는 명령어를 실행하되 명령어를 프롬프트 상으로 반향하지 않는다는 것이고, 콜론, 세미콜론, REM 명령어는 명령어의 반향과는 무관하고 단지 명령어행으로 인식하지 않는다는 차이가 있을 뿐이다.</font> </div><div><font face="궁서체">☞ 빈 줄을 디스플레이하도록 하기</font> </div><div><font face="바탕">스크린에 빈줄을 디스플레이하려면 ECHO 명령어 다음에 마침표(.)를 입력한다. 만약ECHO와 마침표 사이에 스페이스가 있는 경우에는 화면에 마침표(.)를 디스플레이하므로, 빈줄을 디스플레이하려면 둘 사이에스페이스를 두지 않아야 한다.</font> </div><div><font face="궁서체">☞ 파이프와 방향 전환 기호의 디스플레이</font> </div><div><font face="바탕">사용자는 ECHO 명령어를 사용하여 파이프(|)나 입출력 방향 전환 기호(&lt; 혹은 &gt;)를 디스플레이할 수 없다.</font> </div><div><font face="굴림"><b>■ 사용 예</b></font> </div><div><font face="바탕">다음의 예는 선행하는 세 줄의 메시지를 포함하고, 빈줄이 뒤따르는 배치 프로그램의 일부이다.</font> </div><div><font face="바탕"><i>echo off</i></font> </div><div><font face="바탕"><i>echo.</i></font> </div><div><font face="바탕"><i>echo This is batch program</i></font> </div><div><font face="바탕"><i>echo formats and checks</i></font> </div><div><font face="바탕"><i>echo new disks</i></font> </div><div><font face="바탕"><i>echo.</i></font> </div><div><font face="바탕"><i>.</i></font> </div><div><font face="바탕"><i>.</i></font> </div><div><font face="바탕">위의 예에서 ECHO를 끄고, ECHO 명령어를 반향하지 않도록 하려면 다음과 같이 명령어 앞에 at 기호(@)를 포함한다.</font> </div><div><font face="바탕"><i>@echo off</i></font> </div><div><font face="바탕">사용자는 배치 프로그램을 작성할 때 IF 명령어를 ECHO 명령어와 함께 사용할 수 있다. 다음의 예는 명령어 라인 상에 IF와 ECHO 명령어를 사용한 예이다.</font> </div><div><font face="바탕"><i>if exist *.rpt echo the report has arrived.</i></font> </div><div><span style="font-size: 18pt;"><font color="green" face="돋움" size="5">FOR</font></span> </div><div><font face="바탕">사용자가 지정한 일련의 파일에 지정된 명령어를 실행하기 위하여 사용하는 명령어이다.사용자는 FOR 명령어를 배치 프로그램에 사용할 수 있고, 직접 프롬프트 상에서 사용할 수 있는데, 일반적으로 배치 프로그램에서많이 사용되므로 FOR 명령어를 배치 프로그램 명령어로 분류하기도 한다.</font> </div><div><font face="굴림"><b>■ 사용법</b></font> </div><div><font face="바탕">배치 프로그램에서의 FOR 명령어 사용 방법</font> </div><div><font face="돋움"><b>FOR %%</b></font><font face="바탕"><b><i>variable</i></b></font><font face="돋움"><b> IN (</b></font><font face="바탕"><b><i>set</i></b></font><font face="돋움"><b>) DO </b></font><font face="바탕"><b><i>command</i></b></font><font face="돋움"><b> </b></font><font face="바탕"><b>[</b></font><font face="바탕"><b><i>command-para</i></b></font><font face="바탕"><b>]</b></font> </div><div><font face="바탕">명령어 프롬프트에서의 FOR 명령어 사용 방법</font> </div><div><font face="돋움"><b>FOR %</b></font><font face="바탕"><b><i>variable</i></b></font><font face="돋움"><b> IN (</b></font><font face="바탕"><b><i>set</i></b></font><font face="돋움"><b>) DO </b></font><font face="바탕"><b><i>command</i></b></font><font face="돋움"><b> </b></font><font face="바탕"><b>[</b></font><font face="바탕"><b><i>command-para</i></b></font><font face="바탕"><b>]</b></font> </div><font face="굴림"><b>■ 옵션 및 매개변수</b></font> <table _base_target="_son" border="0" cellpadding="0" height="50" width="122"><tbody _base_target="_son"><tr _base_target="_son"><td _base_target="_son" width="100%"><div><font face="바탕"><b>%%</b></font><font face="바탕"><i>variable</i></font> </div><div><font face="바탕">혹은</font><font face="바탕"><b>%</b></font><font face="바탕"><i>variable</i></font></div></td></tr></tbody></table><div><font face="바탕">FOR 명령어에서 교체할 수 있는 변수를 지정한다. FOR 명령어에서는 지정된 명령어가 모든 파일을 처리할 때까지 %%</font><font face="바탕"><i>variable</i></font><font face="바탕">(또는 %</font><font face="바탕"><i>variable</i></font><font face="바탕">)을 모든 매개변수와 차례로 교체하여 사용한다. FOR 명령어를 수행하기 위하여 배치 프로그램에서는 %%</font><font face="바탕"><i>variable</i></font><font face="바탕">을 사용하고, 명령어 프롬프트에서는 %</font><font face="바탕"><i>variable</i></font><font face="바탕">을 사용한다.</font> </div><div><font face="바탕"><b>(</b></font><font face="바탕"><i>set</i></font><font face="바탕"><b>)</b></font> <font face="바탕">사용자가 지정한 명령어로 처리하고자 하는 하나 이상의 파일이나 텍스트 문자열을 지정한다.</font> </div><div><font face="바탕">command</font> <font face="바탕">지정된 (</font><font face="바탕"><i>set</i></font><font face="바탕">)에 포함된 각 파일에서 수행하고자 하는 명령어를 지정한다.</font> </div><div><font face="바탕">command-para</font> <font face="바탕">지정된 명령어가 매개변수나 옵션을 사용할 경우, 해당 옵션이나 매개변수를 지정한다.</font> </div><div><font face="굴림"><b>■ 참고 사항</b></font> </div><div><font face="궁서체">☞ IN과 DO 키워드 사용하기</font> </div><div><font face="바탕">IN과 DO는 매개변수나 옵션이 아니다. 그러나 이것은 FOR 명령어를 사용하기 위하여반드시 사용해야 할 키워드이다. 만약, FOR 명령어를 사용할 때 IN과 DO의 키워드 중 어느 하나를 생략하면 MS-DOS는사용자가 지정한 명령어 형식이 적절하지 않다는 오류 메시지를 디스플레이한다.</font> </div><div><font face="궁서체">☞ 교체할 수 있는 변수 사용하기</font> </div><div><font face="바탕">%에서 %까지의 배치 매개변수와 혼란을 피하기 위하여 %1부터 %9까지의 숫자들을 제외한 모든 문자를 변수로 사용할 수 있다. 간단한 배치 프로그램에는 %%f나 %f와 같은 단일 문자가 필요한 전부가 될 수 있다.</font> </div><div><font face="바탕">사용자는 다른 교체 가능한 변수를 구별하기 위하여 복잡한 배치 프로그램에서 variable에 다수의 값을 사용할 수 있다. 그러나 같은 명령어 라인에 다수의 FOR 명령어를 인접하여 추가할 수 없다.</font> </div><div><font face="궁서체">☞ 다수의 파일군을 지정하기</font> </div><div><font face="바탕">(</font><font face="바탕"><i>set</i></font><font face="바탕">) 매개변수는 파일의 단일 그룹 혹은 다수의 파일 그룹을 지정할 수 있다. 또한 사용자는 파일 세트를 지정하기 위하여 와일드 카드를 사용할 수 있다. 다음은 모두 사용할 수 있는 파일 세트의 예이다.</font> </div><div><font face="바탕"><i>(*.doc)</i></font> </div><div><font face="바탕"><i>(*.doc *.txt *.me)</i></font> </div><div><font face="바탕"><i>(jan*.doc jan*.rpt feb*.doc feb*.rpt)</i></font> </div><div><font face="바탕"><i>(arp??1991.* ap??1991.*)</i></font> </div><div><font face="바탕">사용자가 FOR 명령어를 사용할 때 (</font><font face="바탕"><i>set</i></font><font face="바탕">)에 있는 첫번째 값은 %%</font><font face="바탕"><i>variable</i></font><font face="바탕">(또는 %</font><font face="바탕"><i>variable</i></font><font face="바탕">)을 대체한다. 그리고 MS-DOS는 이 값을 처리하기 위해 지정한 명령어를 수행한다. 이것은 (</font><font face="바탕"><i>set</i></font><font face="바탕">)에 있는 값에 해당하는 모든 파일을 모두 처리할 때까지 기다린다.</font> </div><div><font face="굴림"><b>■ 사용 예</b></font> </div><div><font face="바탕">TXT나 DOC 확장자를 가진 현행 디렉토리 내의 모든 파일의 내용을 디스플레이하는데 TYPE 명령어를 사용하고, 이를 위하여 FOR 명령의 교체 가능한 변수로 %f를 사용하려면 다음과 같은 FOR 명령어를 사용한다.</font> </div><div><font face="바탕"><i>for %f in (*.txt *.doc) do type %f</i></font> </div><div><font face="바탕">위의 예에서 현행 디렉토리 내의 TXT나 DOC 확장자를 갖는 각각의 파일은 모든 파일을디스플레이할 때까지 %f 변수를 대신한다. 위의 예를 배치 프로그램에서 사용하려면 %f의 모든 발생을 %%f로 교체한다. 그렇지않은 경우 MS-DOS는 변수를 무시하고 에러 메시지를 디스플레이한다.</font> </div><div><font face="바탕">MS-DOS는 지정된 명령어와 함께 사용하고자 하는 명령어 옵션과 파이프(|), 방향 전환기호(&gt;)를 모두 지원한다. 예를 들어, 위의 예에서 출력을 스크린으로 하는 대신에 PRN(디폴트 프린터)으로 방향을전환하려면 다음과 같은 명령어를 사용한다.</font> </div><div><font face="바탕"><i>for %f in (*.txt *.doc) do type %f &gt; prn:</i></font> </div><div><font face="바탕">위의 예에서 PRN은 디폴트 프린터를 의미한다. 즉, PRN은 하나의 프린터를 가지고 있는경우에 사용될 수 있는 명령어이다. 만약 둘 이상의 프린터와 연결되어 있는 경우에는 LPT1, LPT2 혹은 LPT3 등으로연결된 프린터 포트를 정확히 지정하여야만 한다</font> </div><div><span style="font-size: 18pt;"><font color="green" face="돋움" size="5">GOTO</font></span> </div><div><font face="바탕">이 명령어는 배치 프로그램에서 사용자가 지정한 레이블에 의해 표시된 명령어 라인으로 직접이동하기 위하여 사용한다. 일단 지정된 레이블로 이동한 후에는 다음 라인에 있는 명령어를 처리한다. GOTO 명령어가 단독으로사용되면 무조건 지정된 레이블로 이동한다. 그러나, 일반적으로 GOTO 명령어는 IF 명령어와 함께 조건 분기를 위하여사용된다. 즉, IF 명령어의 조건문을 만족하는 경우에는 지정된 레이블로 이동하고 조건문을 만족하지 않으면 다음 명령어 라인을실행한다.</font> </div><div><font face="굴림"><b>■ 사용법</b></font> </div><div><font face="돋움"><b>GOTO </b></font><font face="바탕"><b><i>label</i></b></font> </div><div><font face="굴림"><b>■ 옵션 및 매개변수</b></font> </div><div><font face="바탕"><i>label</i></font> <font face="바탕">MS-DOS가 처리해야 할 다음 명령어 라인을 지정한다.</font> </div><div><font face="굴림"><b>■ 사용상의 주의</b></font> </div><div><font face="궁서체">☞ label에 적절한 값 사용하기</font> </div><div><font face="바탕">GOTO 명령어에서 사용하는 레이블로 스페이스를 포함한 모든 문자를 사용할 수 있다.그러나 세미콜론(;)이나 등호(=)와 같은 기호는 사용할 수 없다. 세미콜론의 경우에는 배치 프로그램이나 CONFIG.SYS에서해당 명령어 라인을 디스플레이하지 않기 위하여 사용된다.</font> </div><div><font face="궁서체">☞ GOTO 명령어가 이용하는 레이블의 이름</font> </div><div><font face="바탕">GOTO 명령어는 명령어 라인의 맨 앞에 콜론(:)이 있으면 이를 레이블로 인식하는데, 각레이블의 8글자만 인식한다. 따라서 각 레이블 이름이 처음 8자가 같은 경우에는 동일한 레이블로 인식한다. 즉, 찾아갈레이블에서 콜론을 포함한 처음 8자가 같은 ":HITHER01"과 ":HITHER02"는 ":HITHER0"로 모두 같은 것으로인식한다.</font> </div><div><font face="궁서체">☞ 배치 프로그램 내에서의 label과 맞추기</font> </div><div><font face="바탕">사용자가 GOTO 명령어 라인에서 지정한 레이블은 배치 프로그램의 레이블과 일치하여야하고, 배치 프로그램 내의 각 레이블은 반드시 콜론으로 시작하여야 한다. 만약, 배치 프로그램에서 GOTO 명령어로 지정한레이블을 포함하고 있지 않은 경우 MS-DOS는 배치 프로그램의 실행을 중단하고, 다음과 같은 메시지를 디스플레이한다.</font> </div><div><font face="돋움">Label not found</font> </div><div><font face="바탕">MS-DOS는 콜론으로 시작하는 배치 프로그램 명령어 라인을 레이블로 인식한다. 그리고 레이블은 명령어로 인식하지 않는다. 즉, 콜론으로 시작하는 레이블에 명령어가 포함되어 있을지라도 MS-DOS는 이 명령어를 실행하지 않는다.</font> </div><div><font face="궁서체">☞ GOTO 명령어를 IF 명령어와 함께 사용하기</font> </div><div><font face="바탕">GOTO 명령어는 무조건적인 GOTO문과 조건적인 GOTO문으로 구분된다. 무조건적인 GOTO문은 단순히 다음 단계로 가기 위하여 사용하는 방법으로 다음과 같은 형식으로 사용된다.</font> </div><div><font face="바탕"><i>goto small</i></font> </div><div><font face="바탕"><i>ててててててててて</i></font> </div><div><font face="바탕"><i>:small</i></font> </div><div><font face="바탕"><i>ててててててててて</i></font> </div><div><font face="바탕">조건적인 GOTO문은 IF문과 함께 쓰이는데, 조건식을 만족하는 경우에 사용자가 지정한 레이블로 이동하고, 조건식을 만족하지 않는 경우에는 다음 명령어 라인을 실행한다. IF문에 대한 자세한 사항은 본 장의 "</font><font face="돋움">IF</font>"<font face="바탕"> 명령어를 참조하기 바란다.</font> </div><div><font face="굴림"><b>■ 사용 예</b></font> </div><div><font face="바탕">다음의 배치 프로그램은 A:드라이브에 있는 디스크를 포맷하는 것이다. 만약 포맷이 성공적인 경우 MS-DOS는 END라는 레이블로 직접 이동한다.</font> </div><div><font face="바탕"><i>echo off</i></font> </div><div><font face="바탕"><i>format a:</i></font> </div><div><font face="바탕"><i>if not errorlevel 1 goto end</i></font> </div><div><font face="바탕"><i>echo An error occured during formatting.</i></font> </div><div><font face="바탕"><i>:end</i></font> </div><div><font face="바탕"><i>echo End of Format</i></font> </div><div><span style="font-size: 18pt;"><font color="green" face="돋움" size="5">IF</font></span> </div><div><font face="바탕">이 명령어는 배치 프로그램에서만 사용되는 명령어로 조건적 처리를 수행하기 위하여 사용한다.만약, IF 명령어에 지정된 조건이 참이면 MS-DOS는 그 조건 뒤에 따르는 명령어를 수행하고, 조건이 거짓인 경우에는 IF다음의 명령어를 무시하고 다음 명령어를 수행한다.</font> </div><div><font face="굴림"><b>■ 사용법</b></font> </div><div><font face="돋움"><b>IF </b></font><font face="바탕"><b>[</b></font><font face="돋움"><b>NOT</b></font><font face="바탕"><b>]</b></font><font face="돋움"><b> ERRORLEVEL </b></font><font face="바탕"><b><i>num command</i></b></font> </div><div><font face="돋움"><b>IF </b></font><font face="바탕"><b>[</b></font><font face="돋움"><b>NOT</b></font><font face="바탕"><b>]</b></font><font face="돋움"><b> </b></font><font face="바탕"><b><i>string1==string2 command</i></b></font> </div><div><font face="돋움"><b>IF </b></font><font face="바탕"><b>[</b></font><font face="돋움"><b>NOT</b></font><font face="바탕"><b>]</b></font><font face="돋움"><b> EXIST</b></font><font face="바탕"><b><i> filename command</i></b></font> </div><div><font face="굴림"><b>■ 옵션 및 매개변수</b></font> </div><div><font face="돋움"><b>not</b></font> <font face="바탕">조건문을 만족하지 않으면 뒤에 나오는 명령어를 실행하도록 하기 위하여 사용한다.</font> </div><div><font face="돋움"><b>errorlevel</b></font><font face="바탕"><i>num</i></font> <font face="바탕">직전에 실행된 프로그램이 운영 체제에 되돌려 준 종료 코드보다 크거나 같은 값인 경우에만 지정된 명령어를 실행하도록 하기 위하여 사용한다.</font> </div><div><font face="바탕"><i>string1==string2</i></font> <font face="바탕">string1과 string2가 같은 경우에만 뒤에 오는 명령어를 실행한다. 이 값은 문자열이나 %1 혹은 %2와 같은 배치 프로그램의 매개변수가 올 수 있다. 문자열이 올 경우에도 따옴표를 사용하지 않는다.</font> </div><div><font face="돋움"><b>exist</b></font><font face="바탕"><i> filename</i></font> <font face="바탕">지정한 파일명을 가진 파일이 있는 경우에 다음에 오는 명령어를 실행하도록 지정한다.</font> </div><div><font face="바탕"><i>command</i></font> <font face="바탕">조건문을 만족하는 경우에 실행할 명령어를 지정한다.</font> </div><div><font face="굴림"><b>■ 참고 사항</b></font> </div><div><font face="바탕">프로그램이 중단될 때, 해당 프로그램은 운영 체제에 에러 수준 종료 코드를 되돌려주는데,errorlevel은 이러한 종료 코드를 조건문에 사용할 수 있도록 한다. 종료 코드를 사용하여 배치 프로그램을 분기하는경우에는 항상 종료 코드가 큰 값이 먼저 지정되어야 한다는 것이다. 이것은 배치 프로그램이 명령어를 순차적으로 처리하고,IF문에서 사용되는 errorlevel은 지정한 숫자보다 크거나 같은 경우 조건문을 만족하는 것으로 인식하기 때문이다. 따라서,종료 코드를 큰 수부터 지정하지 않고 낮은 수 예를 들어 0부터 지정한 경우에는 항상 동일한 명령어만 실행될 것이다.</font> </div><div><font face="굴림"><b>■ 사용 예</b></font> </div><div><font face="바탕">만약, MS-DOS가 MARCH.RPT라는 파일을 찾지 못하는 경우 '해당 파일이 없습니다'라는 메시지를 디스플레이하도록 배치 프로그램을 작성하려면 다음과 같이 IF 명령문을 사용한다.</font> </div><div><font face="바탕"><i>@echo off</i></font> </div><div><font face="바탕"><i>if not exist march.rpt echo 해당 파일이 없습니다</i></font> </div><div><font face="바탕">다음의 예는 드라이브를 포맷하는 동안 에러가 발생하는 경우, 해당 에러에 대한 메시지를 디스플레이하도록 작성된 배치 프로그램이다.</font> </div><div><font face="바탕"><i>@echo off</i></font> </div><div><font face="바탕"><i>format %1 %2</i></font> </div><div><font face="바탕"><i>if not errorlevel 1 goto end</i></font> </div><div><font face="바탕"><i>echo 포맷하는 도중에 에러가 발생하였습니다</i></font> </div><div><font face="바탕"><i>goto exit</i></font> </div><div><font face="바탕"><i>:end</i></font> </div><div><font face="바탕"><i>echo 정상적으로 포맷이 완료되었습니다</i></font> </div><div><font face="바탕"><i>:exit</i></font> </div><div><font face="바탕">위의 예에서 'if not errorlevel 1'은 FORMAT이 실행된 뒤 운영 체제로되돌려준 종료 코드가 '1보다 크거나 같지 않은 경우' 즉, '1보다 작은 경우'에만 end로 이동하여 '정상적으로 포맷이완료되었습니다'라는 메시지를 디스플레이하고 배치 프로그램을 종료한다.</font> </div><div><font face="바탕">프로그램의 종료 코드를 이용하여 배치 프로그램을 작성하는 경우 주의할 것은errorlevel 다음에 지정한 숫자는 그보다 크거나 같은 경우를 지정하는 것이기 때문에, 다수의 에러 수준에 따라 다른명령어를 수행하도록 하는 경우에는 반드시 errorlevel의 숫자가 큰 것부터 차례로 IF 명령문을 작성하여야 한다.</font> </div><div><font face="바탕">다음의 예는 디렉토리의 존재를 검사하기 위한 IF 명령문이다. IF 명령어는 디렉토리를직접 검사할 수 없다. 그러나 널(NUL) 장치는 모든 디렉토리에 존재하기 때문에 디렉토리가 있는지를 검사하기 위하여 널 문자를찾음으로써 디렉토리를 확인할 수 있다.</font> </div><div><font face="바탕"><i>if exist c:\hwp\data\nul goto process</i></font> </div><div><font face="바탕">위의 예에서는 C드라이브 상의 HWP\DATA 디렉토리가 있는지를 검사하여 있으면 process 레이블을 실행하고, 없으면 다음 명령어 라인을 실행하라는 것이다.</font> </div><div><span style="font-size: 18pt;"><font color="green" face="돋움" size="5">PAUSE</font></span> </div><div><font face="바탕">이 명령어는 배치 프로그램의 처리를 잠시 중단하고, 사용자에게 계속하려면 임의의 키를 누르라는 메시지를 디스플레이하도록 하기 위하여 사용한다. PAUSE 명령어는 작업 중단을 위한 </font>&lt;<font face="돋움">Ctrl&gt;+&lt;C&gt;</font><font face="바탕">와 함께 사용하여 배치 프로그램의 작업을 나눌 수 있다.</font> </div><div><font face="굴림"><b>■ 사용법</b></font> </div><div><font face="돋움"><b>PAUSE</b></font> </div><div><font face="굴림"><b>■ 사용상의 주의</b></font> </div><div><font face="궁서체">☞ 사용자에게 프로그램을 계속하도록 프롬프트하기</font> </div><div><font face="바탕">MS-DOS는 PAUSE 명령어에 대한 응답으로 다음과 같은 메시지를 디스플레이한다. 사용자는 이 메시지가 디스플레이되었을 때 작업을 계속하기 위하여 임의의 키를 누를 수 있다.</font> </div><div><font face="돋움">Press any key to continue...</font> </div><div><font face="궁서체">☞ 배치 파일의 작업 나누기</font> </div><div><font face="바탕">사용자가 배치 프로그램을 중단하기 위하여 배치 프로그램이 실행되는 중간에 키보드 상에서 </font>&lt;<font face="돋움">Ctrl&gt;+&lt;C&gt;</font><font face="바탕">를 누른다. 그러면, MS-DOS는 다음과 같은 메시지를 디스플레이한다.</font> </div><div><font face="돋움">Terminate batch job (Y/N)?</font> </div><div><font face="바탕">이 메시지에 대한 응답으로 Y를 누르면 배치 프로그램의 실행을 중단하고, 운영 체제로통제를 넘긴다. 따라서 사용자는 이러한 특성을 이용하여 때에 따라 계속하고 싶지 않은 작업이 있는 경우에는 바로 앞에 PAUSE명령어를 삽입함으로써 배치 프로그램의 작업을 나눌 수 있다. 즉, PAUSE 명령어에 의하여 작업이 잠시 중단되어 있는 경우에 </font>&lt;<font face="돋움">Ctrl&gt;+&lt;C&gt;</font><font face="바탕">를 누름으로써 작업을 중단할 수 있는 것이다.</font> </div><div><font face="굴림"><b>■ 사용 예</b></font> </div><div><font face="바탕">사용자가 플로피 드라이브에 있는 디스크를 바꾸라는 메시지를 디스플레이하고, 사용자가디스크를 바꾸기를 기다려야 하는 경우에는 PAUSE 명령어를 적절히 사용할 수 있다. 다음의 예는 다수의 플로피디스크에 있는파일을 현행 디렉토리로 모두 복사하는 배치 프로그램을 작성한 예이다.</font> </div><div><font face="바탕"><i>@echo off</i></font> </div><div><font face="바탕"><i>:begin</i></font> </div><div><font face="바탕"><i>copy a:*.*</i></font> </div><div><font face="바탕"><i>echo Insert a new disk into drive A</i></font> </div><div><font face="바탕"><i>echo If terminate the copy job, press &lt;Ctrl&gt;+&lt;C&gt;</i></font> </div><div><font face="바탕"><i>pause</i></font> </div><div><font face="바탕"><i>goto begin</i></font> </div><div><font face="바탕">위의 예에서 A드라이브에 있는 디스크 상의 모든 파일을 현행 디렉토리로 복사한 다음, 다른 디스크의 내용을 복사하기 위하여 새로운 디스크를 넣으라는 메시지와 작업을 끝내기 위하여 </font>&lt;<font face="돋움">Ctrl&gt;+&lt;C&gt;</font><font face="바탕">키를 누르라는 메시지를 디스플레이하고, 잠시 기다릴 것이다. 여기에서 사용자가 임의의 키를 누르면 작업은 다시 BEGIN으로되돌아 갈 것이다. 이 배치 프로그램은 무한히 계속되는 특징을 갖는다. 이 배치 프로그램을 끝내기 위해서는 </font>&lt;<font face="돋움">Ctrl&gt;+&lt;C&gt;</font><font face="바탕">를 누른 다음, Y를 누른다.</font> </div><div><span style="font-size: 18pt;"><font color="green" face="돋움" size="5">REM</font></span> </div><div><font face="바탕">이 명령어는 사용자가 배치 프로그램의 파일이나 CONFIG.SYS 파일에 주석문을 추가하기위하여 사용하는 명령어로, MS-DOS에서는 REM으로 시작되는 모든 명령어 라인은 명령어로 인식하지 않기 때문에 실행되지않는다. 세미콜론(;)도 동일한 효과를 갖는다.</font> </div><div><font face="굴림"><b>■ 사용법</b></font> </div><div><font face="돋움"><b>REM </b></font><font face="바탕"><b>[</b></font><font face="바탕"><b><i>comments</i></b></font><font face="바탕"><b>]</b></font> </div><div><font face="바탕">혹은,</font> </div><div><font face="돋움"><b>; </b></font><font face="바탕"><b>[</b></font><font face="바탕"><b><i>comments</i></b></font><font face="바탕"><b>]</b></font> </div><div><font face="굴림"><b>■ 옵션 및 매개변수</b></font> </div><div><font face="바탕"><i>comments</i></font> <font face="바탕">주석문으로 사용할 문자열을 지정한다. 주석문에 사용되는 문자는 특별히 아스키로 제한되지 않는다. 즉, 확장 문자를 사용할 수 있다.</font> </div><div><font face="굴림"><b>■ 사용상의 주의</b></font> </div><div><font face="궁서체">☞ 주석문 디스플레이하기</font> </div><div><font face="바탕">REM 명령어는 주석문으로 지정된 문자열을 화면에 디스플레이하지 않는다. 주석문을 디스플레이하려면 배치 파일에서 ECHO 명령어를 사용하거나 CONFIG.SYS 파일에서 ECHO ON 명령어를 사용해야 한다.</font> </div><div><font face="궁서체">☞ REM 사용시의 제한 사항</font> </div><div><font face="바탕">REM 명령어에서 사용되는 주석문의 문자는 특별히 제한되지 않는다. 즉, 확장 문자도주석문의 문장에 사용할 수 있다. 그러나 배치 파일의 주석문에서는 입출력을 위한 반향 전환 기호(&gt; 혹은 &lt;)나파이프(|)를 사용할 수 없다.</font> </div><div><font face="궁서체">☞ 공백 추가하기</font> </div><div><font face="바탕">비록 사용자가 배치 파일에 세로 공백을 디스플레이하기 위하여 주석문 없이 REM 명령어만사용할 수 있지만, 비어있는 라인도 사용할 수 있다. 이것은 MS-DOS가 배치 프로그램을 처리할 때 공백 라인을 무시하여처리하지 않기 때문이다.</font> </div><div><font face="굴림"><b>■ 사용 예</b></font> </div><div><font face="바탕">다음의 예는 설명과 공백을 사용하는 배치 프로그램이다.</font> </div><div><font face="바탕"><i>@echo off</i></font> </div><div><font face="바탕"><i>rem This is batch program formats and checks new disks.</i></font> </div><div><font face="바탕"><i>rem It is named CHECKNEW.BAT</i></font> </div><div><font face="바탕"><i>rem</i></font> </div><div><font face="바탕"><i>echo Insert a new disk in drive A:</i></font> </div><div><font face="바탕"><i>pause</i></font> </div><div><font face="바탕"><i>format a:/v</i></font> </div><div><font face="바탕"><i>chkdsk a:</i></font> </div><div><font face="바탕">사용자가 CONFIG.SYS 파일에서 PROMPT 명령어 앞에 프롬프트를 설명하는 주석문을 추가하려면 다음과 같이 REM 명령어를 사용한다.</font> </div><div><font face="바탕"><i>rem Set prompt to indicate current directory</i></font> </div><div><font face="바탕"><i>prompt $p$g</i></font> </div><div><font face="바탕">장치 제어기를 메모리에 탑재하기 위하여 사용하는 DEVICE 명령어를 실행되지 않도록 지정하려면 다음 예와 같이 명령어의 맨 앞에 REM이나 세미콜론(;)을 추가한다.</font> </div><div><font face="바탕"><i>rem device=c:\dos\power.exe</i></font> </div><div><font face="바탕"><i>;device=c:\dos\power.exe</i></font> </div><div><span style="font-size: 18pt;"><font color="green" face="돋움" size="5">SET</font></span> </div><div><font face="바탕">이 명령어는 MS-DOS의 환경 변수를 설정하거나 변경하고, 설정된 환경 변수를디스플레이하기 위하여 사용하는 것으로 프롬프트 상에서 사용하거나 배치 프로그램에서 사용하는 내부 명령어이다. 사용자는 일부 배치프로그램의 동작을 통제하거나, MS-DOS나 MS-DOS 서브시스템이 나타나고 작동하는 방법을 결정하기 위하여 환경 변수를사용한다. 일반적으로 SET 명령어는 사용자가 컴퓨터를 시동할 때마다 환경 변수를 설정하기 위하여 AUTOEXEC.BAT 파일에사용한다. 따라서, 이 명령어를 프롬프트 명령어에 분류하지 않고 배치 파일 명령어로 분류한 것이다.</font> </div><div><font face="굴림"><b>■ 사용법</b></font> </div><div><font face="돋움"><b>SET </b></font><font face="바탕"><b>[</b></font><font face="바탕"><b><i>variable</i></b></font><font face="돋움"><b>=</b></font><font face="바탕"><b>[</b></font><font face="바탕"><b><i>string</i></b></font><font face="바탕"><b>]]</b></font> </div><div><font face="굴림"><b>■ 옵션 및 매개변수</b></font> </div><div><font face="바탕"><i>none</i></font> <font face="바탕">매개변수 없이 사용되면 현재의 환경 설정을 디스플레이한다.</font> </div><div><font face="바탕"><i>variable</i></font> <font face="바탕">사용자가 설정하거나 변경하고자 하는 변수를 지정한다.</font> </div><div><font face="바탕"><i>string</i></font> <font face="바탕">환경 변수에 지정될 변수값이나 문자열을 지정한다.</font> </div><div><font face="굴림"><b>■ 사용상의 주의</b></font> </div><div><font face="궁서체">☞ 현행 환경 설정을 디스플레이하기</font> </div><div><font face="바탕">사용자가 명령어 프롬프트 상에서 매개변수나 옵션이 없이 SET 명령어를 단독으로 사용하는경우, MS-DOS는 현재 설정된 환경 변수 값을 디스플레이한다. MS-DOS에서 지정할 수 있는 환경 변수는 명령어 해석기의위치를 지정하는 COMSPEC, 실행 파일의 검색 경로를 지정하기 위한 PATH, 프롬프트의 디스플레이 방법을 지정하기 위하여사용하는 PROMPT, 그리고 DIR 명령어를 이용하여 파일 목록을 열람할 때의 옵션을 지정하기 위한 DIRCMD, 데이터를임시 저장하기 위한 디스크 상의 공간을 지정하기 위한 TEMP 환경 변수 등이 있다.</font> </div><div><font face="바탕">이 외에도 응용 프로그램에 따라 필요한 환경 변수를 지정할 수 있다. 예를 들어, 사운드 카드의 경우에는 주소, 인터럽트 요청선을 지정하기 위하여 환경 변수를 사용한다.</font> </div><div><font face="궁서체">☞ 매개변수 사용하기</font> </div><div><font face="바탕">사용자가 SET 명령어를 사용하고 </font><font face="바탕"><i>variable</i></font><font face="바탕">과 </font><font face="바탕"><i>string</i></font><font face="바탕">에 대한 변수를 지정할 때, MS-DOS는 지정된 변수를 환경에 추가하고, </font><font face="바탕"><i>string</i></font><font face="바탕">을 그 변수 값으로 사용한다. 만약, 이미 지정된 환경 변수가 있는 경우에는 새로 지정된 값이 기존의 환경 변수 값을 대체한다.</font> </div><div><font face="바탕">만약, SET 명령어를 사용할 때 </font><font face="바탕"><i>string</i></font><font face="바탕">없이 </font><font face="바탕"><i>variable=</i></font><font face="바탕">만 단독으로 사용하면 MS-DOS는 해당 </font><font face="바탕"><i>variable</i></font><font face="바탕">에 지정되어 있던 모든 환경 변수를 삭제한다.</font> </div><div><font face="궁서체">☞ 배치 파일에 SET 사용하기</font> </div><div><font face="바탕">사용자는 배치 프로그램을 작성할 때 SET 명령을 사용하여 변수값을 설정할 수 있고, %0∼%9까지의 대체 변수와 같은 방식으로 사용할 수도 있다. 또, %0∼%9까지의 대체 변수값을 SET 명령어의 입력값으로 사용할 수도 있다.</font> </div><div><font face="궁서체">☞ 배치 파일에서의 환경 변수의 호출</font> </div><div><font face="바탕">사용자가 배치 파일에서 변수 값을 호출할 때, 사용자는 반드시 그 값을 퍼센트 기호(%)로묶어야 한다. 예를 들어, 기존의 검색 경로를 지정한 PATH 환경 변수를 호출하려면 %PATH%와 같은 방식으로 호출한다.즉, %PATH%는 기존의 환경 변수를 string으로 사용한다.</font> </div><div><font face="바탕">MS-DOS에서는 이러한 환경 변수의 호출이 반드시 배치 프로그램만으로 한정되지 않고, 명령어 프롬프트 상에서도 이를 호출할 수 있다.</font> </div><div><font face="궁서체">☞ 환경 공간에 대한 SET의 효과</font> </div><div><font face="바탕">SET 명령을 입력한 뒤 다음과 같은 메시지가 나올 경우가 있다.</font> </div><div><font face="돋움">Out of environment space.</font> </div><div><font face="바탕">이러한 메시지는 정상적으로 변수 값을 설정하지 못했을 경우 혹은 환경을 저장할 공간이 충분하지 않은 경우에 나타나는 것으로 환경 공간을 확장해 주어야 한다. 환경 공간의 확장에 대한 자세한 사항은 본 장의 "</font><font face="돋움">프롬프트 명령어</font>"<font face="바탕">에 있는 </font><font face="돋움">COMMAND</font><font face="바탕"> 명령어를 참조하기 바란다.</font> </div><div><font face="굴림"><b>■ 사용 예</b></font> </div><div><font face="바탕">C:\INC 디렉토리를 INCLUDE 환경 변수로 설정하려면 다음과 같이 SET 명령어를 사용한다.</font> </div><div><font face="바탕"><i>set include=c:\inc</i></font> </div><div><font face="바탕">위의 예처럼 INCLUDE 환경 변수를 설정한 다음부터는 환경 변수 INCLUDE를 %로 묶어서 배치 파일에서 문자열 대신 사용할 수 있다.</font> </div><div><font face="바탕">예를 들어, 사용자가 INCLUDE 환경 변수와 관련된 디렉토리의 내용을 보기 위하여 배치 파일에 다음과 같은 명령어를 사용할 수 있다.</font> </div><div><font face="바탕"><i>dir %include%</i></font> </div><div><font face="바탕">MS-DOS는 위의 예와 같은 명령어를 처리할 때, %includ% 대신에 C:\INC를 대체한다.</font> </div><div><font face="바탕">SET 명령어는 다음의 예에서 나타난 것처럼, 기존의 환경 변수에 새로운 환경 변수를첨가하기 위하여 사용할 수 있다. 다음의 예는 기존의 검색 경로를 지정한 환경 변수에 사용자가 지정한 디렉토리를 추가하는 내용을담고 있는 배치 프로그램이다.</font> </div><div><font face="바탕"><i>@echo off</i></font> </div><div><font face="바탕"><i>rem ADDPATH.BAT adds a new directory</i></font> </div><div><font face="바탕"><i>rem to the path environment variable</i></font> </div><div><font face="바탕"><i>set path=%1;%path%</i></font> </div><div><span style="font-size: 18pt;"><font color="green" face="돋움" size="5">SHIFT</font></span> </div><div><font face="바탕">MS-DOS에서 배치 프로그램을 실행할 때 %0∼%9의 10개의 매개변수를 사용한다.그러나 교체할 매개변수가 10개를 초과하는 경우에는 이를 한번에 지정할 수 없다. 이를 위하여 MS-DOS에서는 배치프로그램에서 10개 이상의 매개변수를 사용할 수 있도록 SHIFT 명령어를 제공한다. 이 명령어는 배치 파일 내에 있는 교체할수 있는 매개변수의 위치를 앞으로 이동하기 위하여 사용한다.</font> </div><div><font face="굴림"><b>■ 사용법</b></font> </div><div><font face="돋움"><b>SHIFT</b></font> </div><div><font face="굴림"><b>■ 사용상의 주의</b></font> </div><div><font face="궁서체">☞ SHIFT 명령어의 작동 방법</font> </div><div><font face="바탕">SHIFT 명령어는 각 매개변수를 선행자에 복사함으로써 %0에서 %9까지 교체 가능한매개변수의 값을 변경한다. 즉, %1의 값은 %0에 복사되고, %2의 값은 %1에 복사되는 식으로 계속된다. 이것은 매개변수의모든 번호에서 같은 구동을 수행하는 배치 프로그램을 작성하는데 유용하다.</font> </div><div><font face="궁서체">☞ 10개 이상의 매개변수 사용하기</font> </div><div><font face="바탕">사용자가 10개 이상의 매개변수를 받아들이는 배치 프로그램을 작성하는데 SHIFT 명령어는매우 유용하게 사용된다. 만약, 사용자가 10개 이상의 매개변수를 명령어 라인에 지정한 경우 11번째에 지정한 매개변수는SHIFT 명령어를 한번 실행할 때마다 %9로 전환될 것이다.</font> </div><div><font face="궁서체">☞ SHIFT 매개변수의 되돌리기</font> </div><div><font face="바탕">직전에 사용한 매개변수를 다시 사용할 수는 없다. 즉, 매개변수 중에서 한번 SHIFT된 경우 첫번째 매개변수를 메모리에서 삭제하기 때문에 이를 다시 사용할 수 없다.</font> </div><div><font face="굴림"><b>■ 사용 예</b></font> </div><div><font face="바탕">다음 예에서의 배치 프로그램은 SHIFT 명령어를 매개변수의 모든 번호에 사용하는 방법을 보여준다. 이것은 파일의 목록을 특정한 디렉토리에 복사한다. 매개변수는 그 디렉토리의 이름과 그 다음에 오는 파일명의 모든 번호이다.</font> </div><div><font face="바탕"><i>@echo off</i></font> </div><div><font face="바탕"><i>rem USERCOPY.BAT copies any number of files</i></font> </div><div><font face="바탕"><i>rem to a directory</i></font> </div><div><font face="바탕"><i>rem The command uses the following syntax:</i></font> </div><div><font face="바탕"><i>rem usercopy dir file1 file2 . . . . .</i></font> </div><div><font face="바탕"><i>set todir=%1</i></font> </div><div><font face="바탕"><i>:getfile</i></font> </div><div><font face="바탕"><i>shift</i></font> </div><div><font face="바탕"><i>if "%1"=="" goto end</i></font> </div><div><font face="바탕"><i>copy %1 %todir%</i></font> </div><div><font face="바탕"><i>goto getfile</i></font> </div><div><font face="바탕"><i>:end</i></font> </div><div><font face="바탕"><i>set todir=</i></font> </div><font face="바탕"><i>echo All done.</i></font> <br/><br/>tag : <a href="/tag/배치파일" rel="tag">배치파일</a>			 ]]> 
		</description>
		<category>Batch File</category>
		<category>배치파일</category>

		<comments>http://tkword.egloos.com/1096305#comments</comments>
		<pubDate>Thu, 06 Dec 2007 07:00:33 GMT</pubDate>
		<dc:creator>창꿍</dc:creator>
	</item>
</channel>
</rss>
