파일 집합 내의 각 파일에 대해 지정된 명령을 실행합니다.
Syntax
for {%% | %}<variable> in (<set>) do <command> [<commandlineoptions>]
Parameters
| Parameter | Description |
|---|---|
{%% \| %}<variable> |
Required. 대체 가능 매개 변수를 나타냅니다. 단일 백분율 기호(%)를 사용하여 명령 프롬프트에서 for 명령을 수행합니다. 이중 퍼센트 기호(%%)를 사용하여 배치 파일 내에서 for 명령을 수행합니다. 변수는 대소문자를 구분하며 %a, %b또는 %c와 같은 알파벳 값으로 표시되어야 합니다. |
(<set>) |
Required. 하나 이상의 파일, 디렉터리 또는 텍스트 문자열 또는 명령을 실행 하는 데 기반이 값의 범위를 지정 합니다. 괄호가 필요합니다. |
<command> |
Required. 각 파일, 디렉토리 또는 텍스트 문자열 또는 집합에 포함된 값 범위에 대해 수행할 명령을 지정합니다. |
<commandlineoptions> |
지정된 된 명령을 사용 하려면 명령줄 옵션을 지정 합니다. |
| /? | 명령 프롬프트에 도움말을 표시합니다. |
Remarks
배치 파일 내에서 또는 명령 프롬프트에서 직접 이 명령을 사용할 수 있습니다.
다음 속성은 for 명령에 적용됩니다.
이 명령은 지정된 명령이 모든 파일을 처리할 때까지
% variable또는%% variable을 지정된 집합의 각 텍스트 문자열로 대체합니다변수 이름은 대/소문자 구분, 글로벌 및 52 한 번에 수 있는 것 보다 더 이상있지 않습니다.
배치 매개변수
%0와의 혼동을 방지하기 위해 를 통해%9숫자 0에서 9를 제외한 변수에 모든 문자를 사용할 수 있습니다. 간단한 배치 파일의 경우%%f와 같은 단일 문자를 사용할 수 있습니다.복잡한 배치 파일의 변수 에 대해 여러 값을 사용하여 서로 다른 대체 가능한 변수를 구별할 수 있습니다.
set 매개변수는 단일 파일 그룹 또는 여러 파일 그룹을 나타낼 수 있습니다. 와일드카드 문자(* 및 ?)를 사용하여 파일 세트를 지정할 수 있습니다. 다음은 유효한 파일 집합입니다.
(*.doc) (*.doc *.txt *.me) (jan*.doc jan*.rpt feb*.doc feb*.rpt) (ar??1991.* ap??1991.*)이 명령을 사용하면 set의 첫 번째 값이 또는
% variable를 대체%% variable한 다음 지정된 명령이 이 값을 처리합니다. 이는 설정된 값에 해당하는 모든 파일(또는 파일 그룹)이 처리될 때까지 계속됩니다.in 및 do 는 매개 변수가 아니지만 이 명령과 함께 사용해야 합니다. 이러한 키워드를 생략 하면 오류 메시지가 나타납니다.
명령 확장이 활성화된 경우(기본값) 다음과 같은 추가 형식의 for 가 지원됩니다.
디렉토리만 해당:set에 와일드카드 문자( 또는 *)가 포함된 경우 지정된 명령은 set과 일치하는 각 디렉터리(지정된 디렉터리의 파일 집합 대신)에 대해 실행됩니다. 구문은 다음과 같습니다.
for /d {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]재귀:drive:path 에 루트가 있는 디렉터리 트리를 탐색하고 트리의 각 디렉터리에서 for 문을 실행합니다. /r 뒤에 디렉토리가 지정되지 않은 경우 현재 디렉토리가 루트 디렉토리로 사용됩니다. set이 단일 마침표(.)인 경우 디렉터리 트리만 열거합니다. 구문은 다음과 같습니다.
for /r [[<drive>:]<path>] {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]값 범위 반복: 반복 변수를 사용하여 시작 값(start#)을 설정한 다음 설정된 값 범위에서 해당 값이 설정된 종료 값(end#)을 초과할 때까지 단계적으로 실행합니다. /l 은 start#과 end#을 비교하여 반복을 실행합니다. start#가 end#보다 작으면 명령이 실행됩니다. 반복 변수가 end#을 초과하면 명령 셸이 루프를 종료합니다. 음수 단계#를 사용하여 감소하는 값의 범위를 단계별로 실행할 수도 있습니다. 예를 들어, (1,1,5) 1 2 3 4 5 시퀀스를 생성 하 고 (5,-1, 1) 5 4 3 2 1 시퀀스를 생성 합니다. 구문은 다음과 같습니다.
for /l {%%|%}<variable> in (<start#>,<step#>,<end#>) do <command> [<commandlineoptions>]반복 및 파일 구문 분석: 파일 구문 분석을 사용하여 명령 출력, 문자열 및 파일 콘텐츠를 처리합니다. 반복 변수를 사용하여 검사할 컨텐츠 또는 문자열을 정의하고 다양한 parsingkeywords 옵션을 사용하여 구문 분석을 추가로 수정합니다. parsingkeywords 토큰 옵션을 사용하여 반복 변수로 전달해야 하는 토큰을 지정합니다. token 옵션 없이 사용하는 경우 /f 는 첫 번째 토큰만 검사합니다.
파일 구문 분석 하는 작업은 출력, 문자열 또는 파일 내용을 읽는 다음 텍스트의 개별 선으로 분할 하 고 0 개 이상의 토큰으로 구문 분석 되는 각 줄의 구성 됩니다. 그런 다음 토큰 으로 설정된 반복 변수 값으로 for 루프가 호출됩니다. 기본적으로 /f 는 각 파일의 각 줄에서 첫 번째 빈 구분 토큰을 전달합니다. 빈 줄은 건너뜁니다.
구문은 다음과 같습니다.
for /f [<parsingkeywords>] {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>] for /f [<parsingkeywords>] {%%|%}<variable> in (<literalstring>) do <command> [<commandlineoptions>] for /f [<parsingkeywords>] {%%|%}<variable> in ('<command>') do <command> [<commandlineoptions>]set 인수는 하나 이상의 파일 이름을 지정합니다. 각 파일은 세트의 다음 파일로 이동하기 전에 열리고, 읽고, 처리됩니다. 기본 구문 분석 동작을 재정의하려면 parsingkeywords를 지정합니다. 이것이 다른 구문 분석 옵션을 지정 하려면 하나 이상의 키워드를 포함 하는 따옴표 붙은 문자열입니다.
usebackq 옵션을 사용하는 경우 다음 구문 중 하나를 사용합니다.
for /f [usebackq <parsingkeywords>] {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>] for /f [usebackq <parsingkeywords>] {%%|%}<variable> in ('<literalstring>') do <command> [<commandlineoptions>] for /f [usebackq <parsingkeywords>] {%%|%}<variable> in (`<command>`) do <command> [<commandlineoptions>]다음 표에는 parsingkeywords에 사용할 수 있는 구문 분석 키워드가 나열되어 있습니다.
Keyword Description eol= <c>한 줄의 끝 문자 (하나의 문자)를 지정합니다. skip= <n>파일의 시작 부분에 표시 하지 않으려면 줄 수를 지정 합니다. delims= <xxx>구분 기호 집합을 지정합니다. 이 작업 공간 및 탭의 기본 구분 기호 집합을 대체 합니다. tokens= <x,y,m-n>각 반복에 대해 각 줄의 토큰을 for 루프에 전달할 토큰을 지정합니다. 결과적으로, 추가 변수 이름이 할당 됩니다. m-n 은 m번째부터 n번째 토큰까지의 범위를 지정합니다. tokens= 문자열의 마지막 문자가 별표()*인 경우 추가 변수가 할당되고 구문 분석된 마지막 토큰 뒤의 행에 나머지 텍스트를 수신합니다. usebackq 역따옴표로 묶인 문자열을 명령으로 실행하거나, 작은따옴표로 묶인 문자열을 리터럴 문자열로 사용하거나, 공백이 포함된 긴 파일 이름의 경우 <set>의 파일 이름을 각각 큰따옴표로 묶을 수 있도록 지정합니다.변수 대체: 다음 표에는 선택적 구문(변수 I에 대해)이 나열되어 있습니다.
한정자를 사용 하 여 변수 Description %~I둘러싼 따옴표를 제거하는 %I를 확장합니다.%~fI%I를 정규화된 경로 이름으로 확장합니다.%~dI%I를 드라이브 문자로만 확장합니다.%~pI%I를 경로로만 확장합니다.%~nI%I를 파일 이름으로만 확장합니다.%~xI%I를 파일 이름 확장명으로만 확장합니다.%~sI짧은 이름만 포함에 대 한 경로 확장 합니다. %~aI%I를 파일의 파일 특성으로 확장합니다.%~tI%I를 파일의 날짜 및 시간으로 확장합니다.%~zI%I를 파일의 크기로 확장합니다.%~$PATH:IPATH 환경 변수에 나열 된 디렉터리를 검색하고 찾은 첫 번째 디렉터리의 정규화된 이름으로 %I를 확장합니다. 환경 변수 이름이 정의되지 않았거나 검색에서 파일을 찾을 수 없는 경우 이 수정자는 빈 문자열로 확장됩니다.다음 표에서 복합 결과 얻는 데 사용할 수 있는 한정자 조합을 나열 합니다.
결합 된 한정자가 포함 된 변수 Description %~dpI%I를 드라이브 문자와 경로로만 확장합니다.%~nxI%I를 파일 이름과 확장자로만 확장합니다.%~fsI%I를 짧은 이름을 포함한 전체 경로 이름으로만 확장합니다.%~dp$PATH:IPATH 환경 변수에 나열된 디렉터리에서 %I를 검색하고 찾은 첫 번째 드라이브 문자와 경로로 확장합니다.%~ftzaI%I과 같은 출력 라인으로 확장 됩니다.위의 예에서
%I및 PATH를 다른 유효한 값으로 바꿀 수 있습니다. 유효한 변수 이름은 구문을 종료합니다%~.%I와 같은 대문자 변수 이름을 사용하면 코드를 더 읽기 쉽게 만들고 대/소문자를 구분하지 않는 수정자와의 혼동을 피할 수 있습니다.
문자열 구문 분석:
for /f을 큰따옴표(usebackq<literalstring>) 또는 작은따옴표(usebackq 포함) 중 하나로 묶어 직접 문자열에서 구문 분석 논리를 사용할 수 있습니다(예: (MyString) 또는 ('MyString')).<literalstring>는 파일에서 한 줄의 입력으로 처리됩니다. 큰따옴표로<literalstring>을 구문 분석할 때 (\ & | > < ^)와 같은 명령 기호는 일반 문자로 처리됩니다.구문 분석 출력: 이 명령을 사용하여
for /f괄호 사이에 뒷따옴표로 묶인<command>명령을 구문 분석할 수 있습니다. 자식 Cmd.exe에 전달되는 명령줄로 처리됩니다. 출력은 메모리에 캡처되고 파일인 것처럼 구문 분석됩니다.
Examples
배치 파일에서 for 를 사용하려면 다음 구문을 사용합니다.
for {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]
대체 가능한 변수 %f을 사용하여 확장명이 .doc 또는 .txt 있는 현재 디렉터리의 모든 파일의 내용을 표시하려면 다음을 입력합니다.
for %f in (*.doc *.txt) do type %f
앞의 예제에서 현재 디렉터리에 .doc 또는 .txt 확장명이 있는 각 파일은 모든 파일의 내용이 표시될 때까지 %f 변수로 대체됩니다. 배치 파일에서 이 명령을 사용하려면 %f 발생하는 모든 항목을 %%f로 바꿉니다. 그렇지 않으면 변수는 무시 하 고 오류 메시지가 표시 됩니다.
파일을 구문 분석 하려면 무시 하 고 주석 처리 된 줄, 유형:
for /f "eol=; tokens=2,3* delims=," %i in (myfile.txt) do @echo %i %j %k
이 명령은 myfile.txt의 각 줄을 구문 분석합니다. 세미콜론으로 시작하는 줄을 무시하고 각 줄의 두 번째 및 세 번째 토큰을 for 본문으로 전달합니다(토큰은 쉼표 또는 공백으로 구분됨). for 문 참조의 본문은 두 번째 토큰을 가져오고, %j 세 번째 토큰을 가져오고, 나머지 토큰을 모두 가져오는 %k%i 있습니다. 제공하는 파일 이름에 공백이 포함된 경우 텍스트 주위에 따옴표를 사용합니다(예: File Name). 따옴표를 사용하려면 usebackq를 사용해야 합니다. 그렇지 않으면 따옴표는 리터럴 문자열을 구문 분석을 정의로 해석 됩니다.
%ifor 문에 명시적으로 선언됩니다. %j 및 %k 는 tokens=를 사용하여 암시적으로 선언됩니다. 문자 z 또는 Z보다 높은 변수를 선언하려고 시도하지 않는 경우 tokens= 를 사용하여 최대 26개의 토큰을 지정할 수 있습니다.
괄호 사이에 set 을 배치하여 명령의 출력을 구문 분석하려면 다음을 입력합니다.
for /f "usebackq delims==" %i in (`set`) do @echo %i
하위 디렉터리를 포함하여 디렉터리에 있는 모든 파일의 재귀 루프를 수행하고 전체 경로를 에코하려면 마지막으로 수정된 경우 및 파일 크기를 입력합니다.
for /r "C:\My Dir\" %A in (*.*) do echo %~ftzA