HOWTO · Batch
배치 스크립트의 FOR 루프
Windows cmd.exe의 FOR 명령을 사용해 배치 파일에서 목록, 숫자 범위, 디렉터리, 파일, 분석한 텍스트 및 인수를 반복 처리합니다.
이 페이지의 내용
.bat 또는 .cmd 파일에서는 FOR와 %%I처럼 퍼센트 기호를 두 번 쓴 루프 변수를 사용하여 각 항목마다 명령을 한 번 실행합니다. 대화형 명령 프롬프트에서는 %I처럼 퍼센트 기호를 하나만 사용하므로, 이 차이가 복사한 FOR 명령이 실패하는 흔한 원인입니다.
FOR는 리터럴 목록, 숫자 범위, 디렉터리, 파일, 분석한 텍스트 또는 스크립트에 전달한 인수를 반복할 수 있습니다. 아래 예제는 cmd.exe 구문을 사용하며 출력을 작게 유지하므로 한 번에 한 형식씩 바꿔 볼 수 있습니다.
목록 또는 일치하는 파일 반복하기
루프 변수는 FOR 뒤에, 항목은 IN 뒤에, 명령은 DO 뒤에 둡니다. 공백이 있을 수 있는 파일 경로는 따옴표로 묶고, 명령에 전체 경로가 필요하면 %%~fI를 사용합니다.
@echo off
FOR %%I IN (red green blue) DO echo %%I
출력:
red
green
blue
현재 디렉터리의 일치 파일을 처리하려면 리터럴 목록을 ("*.txt") 같은 와일드카드로 바꿉니다. 괄호는 일치하는 각 경로를 하나의 항목으로 처리하므로 공백이 있는 파일 이름에도 더 안전합니다.
FOR /L로 세기
FOR /L은 (시작,증가값,끝)을 사용합니다. 증가값으로 도달할 수 있으면 끝 값도 포함됩니다. 내림차순 범위에는 음수 증가값이 필요하며, 양수 증가값으로는 거꾸로 셀 수 없습니다.
@echo off
FOR /L %%I IN (5,-2,1) DO echo %%I
출력:
5
3
1
이 형식은 재시도, 번호가 붙은 파일, 예측 가능한 숫자 순서가 있는 작업에 유용합니다. 루프가 실행될 것이라고 가정하기 전에 방향과 증가값의 부호를 확인하세요.
디렉터리와 파일 열거하기
패턴에 맞는 디렉터리에는 FOR /D를 사용합니다. FOR /R 루트는 루트 디렉터리와 하위 디렉터리에서 파일을 찾습니다. %%~nx 수정자는 일치 항목의 이름과 확장자만 출력하므로 예제 출력이 현재 절대 경로에 의존하지 않습니다.
@echo off
FOR /D %%D IN (demo\*) DO echo DIR %%~nxD
FOR /R demo %%F IN (*.txt) DO echo FILE %%~nxF
출력:
DIR one
DIR two
FILE first.txt
FILE second.txt
FOR /R은 재귀적으로 검색하므로 넓은 와일드카드는 예상보다 많은 파일을 건드릴 수 있습니다. 먼저 echo로 일치한 이름을 확인한 후 파일을 변경하는 명령으로 바꾸세요.
FOR /F로 텍스트 분석하기
FOR /F는 파일, 따옴표로 묶은 문자열 또는 다른 명령의 출력에서 줄을 읽습니다. 기본 구분 기호는 공백과 탭이므로 입력에 알려진 구분자가 있으면 tokens와 delims를 지정합니다. 여기서는 처음 두 개의 쉼표 구분 필드가 %%A와 %%B가 됩니다.
@echo off
FOR /F "tokens=1,2 delims=," %%A IN (names.txt) DO echo %%A %%B
출력:
Ada Lovelace
Grace Hopper
FOR /F 옵션으로 "age=23" 같은 임의의 기준을 사용하지 마세요. 대표 입력으로 분석 절을 테스트하고 빈 줄은 기본적으로 건너뛴다는 점을 기억하세요.
인수 처리와 중첩 루프 사용하기
%*는 배치 파일에 전달된 모든 인수를 나타냅니다. 중첩된 FOR 루프는 두 집합을 조합할 수 있지만 각 수준에서는 다른 루프 변수를 사용해야 합니다. 괄호 안에서 환경 변수를 바꾸는 경우 지연 확장을 사용하고 %name% 대신 !name!으로 값을 읽으세요.
@echo off
FOR %%A IN (%*) DO echo ARG %%A
FOR %%I IN (1 2) DO FOR %%J IN (A B) DO echo PAIR %%I-%%J
example.bat first second으로 실행했을 때의 출력:
ARG first
ARG second
PAIR 1-A
PAIR 1-B
PAIR 2-A
PAIR 2-B
배치 파일은 Windows의 작은 자동화 작업에 실용적입니다. 복잡한 데이터 구조, 견고한 오류 처리 또는 크로스 플랫폼 작업에는 PowerShell이 대체로 유지 관리하기 쉬우며, 어느 도구에서든 파일 이름 변경, 복사, 삭제 전에 무해한 echo 루프부터 시작하세요.