컴퓨터 엑셀 워드 포토숍 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Previous Post Cygwin의 bashrc, bash_profile, inputrc 설정 파일들의 기본 위...울트라 에디트 환경설정 있는 곳은? - 울트라 에디터 UltraEdit Config시그윈(Cygwin) 미러 사이트 - 빠른 한국 사이트는? - Mirror SiteVBS 팁] IE에서 여러 사이트 동시에 열기, 비베 스크립트 (VBScript) 로[QnA] 북마크는 무엇인가요? '즐겨찾기'는 어떤 사이트인가요? - Bookmark윈도우XP에 필요한 메모리 용량 - 최소한/권장 용량 - Memory Requirement...키보드에 나눗셈 곱셈 (나누기 곱하기) 기호가 없어요 / 사칙연산이란? - Divide M...자바/Java] 엑셀 ROUND() 함수 구현 - Excel 반올림파일 내부 보는 프로그램은? Unicode(유니코드), MP3 등의 이진파일 - Hex V...리눅스] Hex Editor (헥사 에디터) / 이진 파일 편집기 - Binary Edit...

배치파일] FOR 문 예제. for in do 사용법 - 도스 DOS Bat File 강좌

Thursday, September 28, 2006

도스창의 각 명령어들은, *.* 등의 와일드카드(Wildcard)를 사용하여 여러 개의 파일들을 한꺼번에 처리할 수 있지만, 한 번에 1개씩만 처리할 수 있는 명령어나 프로그램들이 가끔 있습니다. 그럴 때는 각 파일에 한번씩 명령어를 적용해 주느라 아주 힘들게 됩니다. 다루어야 할 파일이 수천 개라면 알바를 고용해야 할지도 모릅니다. 이때 for 문을 사용하면, 와일드카드가 지원되지 않는 명령어/프로그램에 와일드카드를 적용시킬 수 있어 편리합니다.

즉, 배치파일의 for문은, 와일드카드가 적용되지 않는 명령어/프로그램에 와일드카드를 만들어 주는 것입니다.


for문 예제


가장 간단하고 쉬운 예제입니다. 다음의 코드를 0.bat 등의 이름으로 하드에 저장하고 실행합니다.
@echo off


for %%i in (*.*) do attrib "%%i"

이 예제는, 현재 디렉토리의 모든 파일의 속성을 화면에 한꺼번에 출력하는 것입니다. (attrib 명령은 파일이나 디렉토리의 속성을 보거나 변경하는 것인데, 와일드카드가 지원되어 한꺼번에 여러 개의 파일을 바꿀 수 있지만, 여기서는 예를 들기 위해, 그런 기능이 없다고 가정합니다. 즉 한 번에 1개의 파일만 처리할 수 있다고 생각합니다.)


실행 결과:
D:\Z>0.bat
A          D:\Z\.bashrc
           D:\Z\.bash_profile
A          D:\Z\.inputrc
A          D:\Z\0.bat
A          D:\Z\0.cpp
A          D:\Z\0.htm
A          D:\Z\0.pl
A          D:\Z\0.txt
           D:\Z\1.txt
           D:\Z\ddd Foo.java
           D:\Z\Foo.class
           D:\Z\Foo.java
     R     D:\Z\test.jpg

D:\Z>

이렇게 한꺼번에 출력되었습니다.



for문의 문법 설명


for %%i in (*.*) do attrib "%%i"


for 다음에 있는 변수는 %%i 이렇게 퍼센트 기호를 앞에 2개 붙여야 합니다. for문의 변수명은 대소문자를 구분합니다. %i와 %I는 다릅니다. 변수는 대체로 %%i 이렇게 지정하면 됩니다.

in 다음의 (*.*)은 모든 파일을 작업 대상으로 하라는 와일드카드입니다. 이 부분을 (*.txt) 이렇게 하면, 현재 디렉토리(폴더)의 "모든 .txt 확장자를 가진 파일"만 대상으로 합니다.

do 다음에는, 각 파일에 대해 실행할 명령어와 옵션을 적어주면 됩니다.

맨 마지막의 "%%i" 는, 각 파일명들이 명령어에 자동으로 대입되는 부분입니다. 큰따옴표로 둘러싸야만, "공백 있는 파일명"을 다룰 수 있습니다.



for 와 %%i 사이에 넣는 옵션들


다음 옵션들을 for 뒤에 적어 주면 작업 방식을 변경할 수 있습니다.

/d : 파일이 아닌 디렉토리들을 작업 대상으로 함

/r : 하위 디렉토리의 파일들까지 처리합니다.



for문은 배치 파일의 고급 테크닉에 사용되는 것입니다. 그래서 잘못 사용하면 위험하기도 합니다. 어떤 파일들이 처리 대상이 될지 잘 파악해야 하고, 임시 파일들을 만들어 충분히 테스트해 보아야 합니다.



도스창에서,
for /?
라고 하면, for문에 대한 더 자세한 도움말이 나옵니다.



▶▶ 배치파일] FOR문으로, 텍스트 파일 행 처리 - 도스 DOS Bat File 강좌

▶▶ C언어] cl.exe: 소스 파일 여러개 한꺼번에 컴파일하는 배치파일: Multiple Source Files Compile at Once

☞ BATCH(.BAT)/VBScript(.VBS)

3 Comments:
At 4:53 AM, Blogger pinetree822 said...

심심해서 만들어봐써요.
DOS Timer / For /L In .. Do 문

:::::::::::::::::::::::::::::::::
::: Timer.bat >>>
echo.
echo.
echo *===============================================================
echo Microsoft 텔넷 서버 시작
echo *===============================================================
echo.
echo.
echo ** "%COMPUTERNAME%" 에서 접속하셧습니다.
echo ** 현재 날짜는 %YEAR%년 %MONTH% 월 %DAY% 일 %WEEK% 요일입니다.
echo ** 현재 시각은 %HOUR% 시 %MINUTE% 분 입니다.
echo.
echo.

echo ** 기존 접속된 개인보관함 종료중입니다.
echo ** 잠시만 기다려주세요.
echo.
echo.



::::::::::::::::::::::::::::::::::::::::::::::루프구간
:: 총 6초 대기
for /L %%i in (5,-1,0) do (ping 127.0.0.1 -n 2 > nul | echo ■%%i정리중입니다.)

:: errorlevel 값 확인 ==0
:: errorlevel 값 초기화시키고 확인
::: EOF;
:::::::::::::::::::::::::::::::::

 
At 9:15 AM, Blogger mwultong said...

좋은 정보 감사합니다^_^

 
At 12:15 PM, Blogger 서정현 said...

정말 감사합니다 많은 도움이 되었어요^^

 

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Categories
Previous Posts
Monthly Archives
Top