들어가며
FOR 명령은 IF 명령과 함께 배치파일에서 지원하는 제어 명령이다. 또한 윈도XP는 도스의 그것보다 훨씬 강력한 기능을 제공하고 있다.
말뜻
FOR 명령에 쓰이는 for가 어떤 뜻에서 나왔는지를 알 수 없었다.
FOR 기본 문법
명령줄에서 FOR 사용
if 명령과 마찬가지로 FOR 명령도 명령줄에서 바로 쓸 수 있다.
- FOR %I IN (CD PATH VER) DO %I
아주 짧지만 분명히 잘 동작하며, FOR 명령의 기본 사용법을 잘 나타내고 있다.
FOR 명령의 기본 사용법은 다음과 같다.
FOR %변수 IN (집합) DO 명령어 [명령어 매개변수]
그런데 앞서 보인 코드에서는 명령어 부분이 생략되어 있는 특이한 경우이다. 물론 변수를 명령어 대신 사용하고 있기 때문이다.
모든 형식을 갖추어 FOR 명령을 사용한다면 다음과 같은 방법도 가능하다.
- FOR %I IN (%PATH%) DO ECHO %I
위의 코드는 PATH를 한 줄에 하나씩 보여준다.
- FOR %I IN (CD PATH VER) DO ECHO %I
위의 코드는 집합에 있는 3개 인자(CD PATH VER)을 ECHO 명령으로 출력하는 구문이다.
기본 문법
명령줄에서 다음과 같이 입력하면 기본 사용법을 알 수 있다.
- FOR /?
명령줄에서 사용하는 것과 배치파일에서 사용하는 방법에서 조금 차이가 있다.
FOR %변수 IN (집합) DO 명령어 [명령어 매개변수]
위의 사용법은 명령줄에서 사용하는 방법이다. 그런데 배치파일에서는 아래와 같이 사용해야 한다.
FOR %%변수 IN (집합) DO 명령어 [명령어 매개변수]
% 기호가 하나이냐 둘이냐에 따라 사용하는 곳이 달라진다. 이때 %변수는 주로 %I (퍼센트-대문자 아이)로 나타내는 때가 많으며, %I의 경우 대문자와 소문자를 구별하므로 주의해야 한다. 또한 1문자로 된 변수라면 0부터 9까지를 제외하면 모든 영문자를 사용할 수 있다. 대문자와 소문자를 구분하므로 총 52개를 사용할 수 있습니다.
예제
FOR문은 단순한 구조로 반복되는 작업에 자주 쓰인다.
윈도XP 업데이트 파일(핫픽스 파일)을 윈도XP에 통합하려고 할 때에는 그 파일명이 WindowsXP-KB*.exe와 같은 꼴을 이루게 된다. 이럴 때 FOR 구문을 이용하면 쉽게 할 수 있다.
- @echo off
- SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
- ECHO 윈도XP 복사본의 I386이 있는 디렉터리는?
- SET /P WORK=
- FOR %%I IN (WindowsXP-KB*.exe) DO %%I /integrate:%WORK% /nobackup /overwriteoem
위의 내용대로라면 중간에 한 차례 사용자 입력이 필요하지만, 처음부터 다음과 같이 지정해도 된다.
- @echo off
- FOR %%I IN (WindowsXP-KB*.exe) DO %%I /integrate:C:\WXP\i386 /nobackup /overwriteoem
이렇게 해도 몇몇 파일은 여전히 통합되지 않고 있으나, 하나하나 작업할 때에 비한다면 작업량이 매우 줄어든다. 더구나 이 배치파일은 나중에 재활용할 수 있다.
만약에 설치본에 통합하는 것이 아니라, 윈도XP를 설치한 뒤에 핫픽스만 따로 설치한다고 가정하면 위의 배치파일을 다음과 같이 고치면 된다.
- @echo off
- FOR %%I IN (WindowsXP-KB*.exe) DO %%I /nobackup /overwriteoem /quite /norestart
다음 예고
FOR 명령을 대해 좀 더 자세히 알아보자.
FOR 명령은 도스의 경우와 판이하게 달라져서 알면 아주 유용할 수도 있기 때문에 자세히 알아볼 필요가 있다.
이 글은 스프링노트에서 작성되었습니다.
'스크립트 > 배치파일' 카테고리의 다른 글
FOR 명령 확장 2 (3) | 2009.07.16 |
---|---|
FOR 명령 확장 1 (2) | 2009.06.17 |
GOTO 명령 (3) | 2009.05.05 |
IF 명령 확장 (1) | 2009.04.22 |
IF 문자열 (4) | 2009.04.18 |