FOR 명령과 관련한 여러 가지 쓰임은 상당히 유용하다. 아울러 명령줄에서 직접 제공하지 않는 기능을 FOR 명령 확장을 이용하여 구현할 수도 있다.
읽기에 앞서
- 명령어 구문에서 { | }(브레이스와 바, 중괄호와 막대)로 이루어진 부분은 둘 가운데 하나를 선택해야 한다. 예컨대 {%% | %}와 같은 경우 %%와 % 가운데 하나를 선택하여 사용해야 함을 뜻한다.
- [](대괄호)로 묶인 부분은 그 부분을 쓰지 않아도 무방함을 나타낸다. 필요할 때만 쓰면 된다.
디렉터리 전용
집합에 와일드카드(* 및 ?)를 포함하면 지정된 명령은 지정된 디렉터리의 파일 집합 대신 집합과 일치하는 각 디렉터리에 대해 실행됩니다. 구문은 다음과 같습니다.
FOR /D {%% | %}변수 IN (집합) DO 명령 [명령-매개 변수]
예컨대 파일은 그대로 두고 디렉터리의 이름만을 바꾸고 싶다면, 이 디렉터리 전용 옵션은 상당히 유용합니다.
재귀적 사용
[드라이브:]경로를 루트로 하여 디렉터리 트리를 따라 내려가며 FOR 구문을 트리의 각 디렉터리에서 실행합니다. /R 스위치 뒤에 디렉터리가 지정되지 않으면 현재 디렉터리가 사용됩니다. 집합에 마침표(.)가 사용되면 디렉터리 트리만 나열합니다.
FOR /R [[드라이브:]경로] {%% | %}변수 IN (집합) DO 명령 [명령-매개 변수]
이 구문은 명령어가 하위 디렉터리 옵션을 지원하지 않을 경우에 상당히 유용합니다.
값의 범위 반복
반복 변수를 사용하여 시작을 설정한 다음 값이 집합의 끝을 초과할 때까지 값의 집합 범위를 단계적으로 검사합니다. 집합은 단계별로 증가/감소하는 시작부터 끝까지의 일련의 숫자입니다. 따라서 (1,1,5)는 1 2 3 4 5를 나타내며 (5,-1,1)은 5 4 3 2 1을 나타냅니다.
FOR /L {%% | %}변수 IN (시작,단계,끝) DO 명령 [명령-매개 변수]
이 구문은 프로그래밍 언어에서 사용하는 FOR 구문과 비슷합니다. 실제로 배치파일에서 사용하기 위해 변수와 수치를 대입하면 다음과 같습니다.
- @ECHO OFF
- SETLOCAL
- SET SUM=0
- SET SUMTEMP=0
- FOR /L %%i IN (1,1,10) DO CALL :COUNT
- GOTO :EOF
- :COUNT
- SET /A SUMTEMP=%SUMTEMP%+1
- SET /A SUM=%SUM%+%SUMTEMP%
- ECHO %SUMTEMP% = %SUM%
- GOTO :EOF
참고로 C언어에서는 다음과 같은 구조를 가집니다.
- int i, sum;
- for (i=1, sum=0; i<=10; i++) {
- sum = sum + i;
- printf ("\d\n", sum);
- }
다음 예고
FOR 명령에서 파일 구조 분석과 변수 대체에 대해 알아보겠습니다.
이 글은 스프링노트에서 작성되었습니다.