스크립트/배치파일

FOR 명령 확장 1

koc/SALM 2009. 6. 17. 09:41

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 구문과 비슷합니다. 실제로 배치파일에서 사용하기 위해 변수와 수치를 대입하면 다음과 같습니다.

  1. @ECHO OFF
  2. SETLOCAL
  3. SET SUM=0
  4. SET SUMTEMP=0
  5. FOR /L %%i IN (1,1,10) DO CALL :COUNT
  6. GOTO :EOF
  7.  
  8. :COUNT
  9. SET /A SUMTEMP=%SUMTEMP%+1
  10. SET /A SUM=%SUM%+%SUMTEMP%
  11. ECHO %SUMTEMP% = %SUM%
  12. GOTO :EOF

참고로 C언어에서는 다음과 같은 구조를 가집니다.

  1. int i, sum;
  2. for (i=1, sum=0; i<=10; i++) {
  3. sum = sum + i;
  4. printf ("\d\n", sum);
  5. }

다음 예고

FOR 명령에서 파일 구조 분석과 변수 대체에 대해 알아보겠습니다.

이 글은 스프링노트에서 작성되었습니다.