for

파일 집합 내에서 각 파일에 대해 지정된 명령을 실행합니다.

구문

for {%% | %}<variable> in (<set>) do <command> [<commandlineoptions>]

매개 변수

매개 변수 설명
{%% \| %}<variable> 필수입니다. 대체 가능 매개 변수를 나타냅니다. 명령 프롬프트에서 for 명령을 수행하려면 단일 백분율 기호(%)를 사용합니다. 이중 백분율 기호를 사용 하 여 (%%)를 수행 하는 에 대 한 배치 파일 내 명령입니다. 변수는 대/소문자를 구분하며 %a, %b 또는 %c와 같은 사전순 값으로 표현되어야 합니다.
(<set>) 필수입니다. 하나 이상의 파일, 디렉터리 또는 텍스트 문자열 또는 명령을 실행 하는 데 기반이 값의 범위를 지정 합니다. 괄호가 필요합니다.
<command> 필수입니다. 각 파일, 디렉터리 또는 텍스트 문자열 또는 집합에 포함된 값 범위에서 수행하려는 명령을 지정합니다.
<commandlineoptions> 지정된 된 명령을 사용 하려면 명령줄 옵션을 지정 합니다.
/? 명령 프롬프트에 도움말을 표시합니다.

설명

  • 일괄 처리 파일 내에서 또는 명령 프롬프트에서 직접 이 명령을 사용할 수 있습니다.

  • 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.*)
    
  • 이 명령을 사용하면 집합의 첫 번째 값% variable 대체되거나 %% variable지정된 명령이 이 값을 처리합니다. 이 작업은 집합 값에 해당하는 모든 파일(또는 파일 그룹)이 처리될 때까지 계속됩니다.

  • Indo 는 매개 변수가 아니지만 이 명령과 함께 사용해야 합니다. 이러한 키워드를 생략 하면 오류 메시지가 나타납니다.

  • 명령 확장이 사용하도록 설정된 경우(기본값) 다음과 같은 추가 형식 이 지원됩니다.

    • 디렉터리만: 집합에 야생카드 문자(*또는 ?)가 포함된 경우 지정된 명령은 집합과 일치하는 각 디렉터리(지정된 디렉터리의 파일 집합 대신)에 대해 실행됩니다. 구문은 다음과 같습니다.

      for /d {%%|%}<Variable> in (<Set>) do <Command> [<CommandLineOptions>]
      
    • 재귀: drive:path루팅된 디렉터리 트리를 탐색하고 트리의 각 디렉터리에서 for 문을 실행합니다. 디렉터리가 없는 지정 되 면 /r, 현재 디렉터리를 루트 디렉터리로 사용 됩니다. 설정이 단일 마침표(.)인 경우 디렉터리 트리만 열거합니다. 구문은 다음과 같습니다.

      for /r [[<drive>:]<path>] {%%|%}<variable> in (<set>) do <command> [<commandlinepptions>]
      
    • 값 범위 반복: 반복 변수를 사용하여 시작 값(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> [<commandlinepptions>]
      
    • 반복 및 파일 구문 분석: 파일 구문 분석을 사용하여 명령 출력, 문자열 및 파일 콘텐츠를 처리합니다. 반복 변수를 사용하여 검사하려는 콘텐츠 또는 문자열을 정의하고 다양한 구문 분석키워드(keyword)s 옵션을 사용하여 구문 분석을 추가로 수정합니다. 구문 분석키워드(keyword)s 토큰 옵션을 사용하여 반복 변수로 전달해야 하는 토큰을 지정합니다. 토큰 옵션 없이 사용하는 경우 /f 는 첫 번째 토큰만 검사합니다.

      파일 구문 분석 하는 작업은 출력, 문자열 또는 파일 내용을 읽는 다음 텍스트의 개별 선으로 분할 하 고 0 개 이상의 토큰으로 구문 분석 되는 각 줄의 구성 됩니다. 에 대 한 루프 반복 변수 값이 토큰에 설정 된 후 호출 됩니다. 기본적으로 /f 각 파일의 각 줄에서 분리 하 고 첫 번째 빈 토큰을 전달 합니다. 빈 줄은 건너뜁니다.

      구문은 다음과 같습니다.

      for /f [<parsingkeywords>] {%%|%}<variable> in (<set>) do <command> [<commandlinepptions>]
      for /f [<parsingkeywords>] {%%|%}<variable> in (<literalstring>) do <command> [<commandlinepptions>]
      for /f [<parsingkeywords>] {%%|%}<variable> in ('<command>') do <command> [<commandlinepptions>]
      

      set 인수는 하나 이상의 파일 이름을 지정합니다. 각 파일은 집합의 다음 파일로 이동하기 전에 열리고 읽고 처리됩니다. 기본 구문 분석 동작을 재정의하려면 구문 분석키워드(keyword) 지정합니다. 이것이 다른 구문 분석 옵션을 지정 하려면 하나 이상의 키워드를 포함 하는 따옴표 붙은 문자열입니다.

      사용 하는 경우는 usebackq 옵션을 다음 구문 중 하나를 사용 합니다.

      for /f [usebackq <parsingkeywords>] {%%|%}<variable> in (<Set>) do <command> [<commandlinepptions>]
      for /f [usebackq <parsingkeywords>] {%%|%}<variable> in ('<LiteralString>') do <command> [<commandlinepptions>]
      for /f [usebackq <parsingkeywords>] {%%|%}<variable> in (`<command>`) do <command> [<commandlinepptions>]
      

      다음 표에서는 구문 분석키워드(keyword) 사용할 수 있는 구문 분석 키워드(keyword) 나열합니다.

      키워드 설명
      eol=<c> 한 줄의 끝 문자 (하나의 문자)를 지정합니다.
      skip=<n> 파일의 시작 부분에 표시 하지 않으려면 줄 수를 지정 합니다.
      delims=<xxx> 구분 기호 집합을 지정합니다. 이 작업 공간 및 탭의 기본 구분 기호 집합을 대체 합니다.
      tokens=<x,y,m–n> 전달 되는 각 줄의 토큰을 지정 된 에 대 한 각 반복에 대 한 루프입니다. 결과적으로, 추가 변수 이름이 할당 됩니다. m-n은 mth부터 n번째 토큰까지의 범위를 지정합니다. 하는 경우의 마지막 문자는 토큰 = 문자열은 별표 (*), 추가 변수를 할당 하 고 구문 분석 된 마지막 토큰 뒤의 나머지 텍스트는 줄에 받을 합니다.
      usebackq 따옴표로 묶은 문자열을 명령으로 실행하거나, 작은따옴표로 묶은 문자열을 리터럴 문자열로 사용하거나, 공백이 포함된 긴 파일 이름의 경우 파일 이름을 <set>각각 큰따옴표로 묶을 수 있도록 지정합니다.
    • 변수 대체: 다음 표에서는 선택적 구문(모든 변수 I의 경우)을 나열합니다.

      한정자를 사용 하 여 변수 설명
      %~I %I 주변 따옴표를 제거하는 확장합니다.
      %~fI 정규화된 경로 이름으로 확장합니다 %I .
      %~dI 드라이브 문자로만 확장됩니다 %I .
      %~pI 경로로만 확장됩니다 %I .
      %~nI 파일 이름으로만 확장됩니다 %I .
      %~xI 파일 이름 확장명만 확장합니다 %I .
      %~sI 짧은 이름만 포함에 대 한 경로 확장 합니다.
      %~aI 파일의 파일 특성으로 확장합니다 %I .
      %~tI 파일의 날짜 및 시간으로 확장합니다 %I .
      %~zI 파일 크기로 확장합니다 %I .
      %~$PATH:I PATH 환경 변수에 나열된 디렉터리를 검색하고 찾은 첫 번째 디렉터리의 정규화된 이름으로 확장합니다 %I . 환경 변수 이름이 정의되지 않았거나 검색에서 파일을 찾을 수 없는 경우 이 한정자는 빈 문자열로 확장됩니다.

      다음 표에서 복합 결과 얻는 데 사용할 수 있는 한정자 조합을 나열 합니다.

      결합 된 한정자가 포함 된 변수 설명
      %~dpI 드라이브 문자 및 경로로만 확장됩니다 %I .
      %~nxI %I 파일 이름 및 확장명만 확장합니다.
      %~fsI 짧은 이름만 있는 전체 경로 이름으로 확장합니다 %I .
      %~dp$PATH:I PATH 환경 변수 %I 에 나열된 디렉터리를 검색하고 첫 번째 파일의 드라이브 문자와 경로로 확장합니다.
      %~ftzaI dir%I 같은 출력 줄로 확장됩니다.

      위의 예제에서는 PATH를 다른 유효한 값으로 바꿀 %I 수 있습니다. 변수 이름에 유효한 구문이 %~ 종료됩니다.

      대문자 변수 이름(예: %I)을 사용하면 코드를 더 읽기 쉽게 만들고 대/소문자를 구분하지 않는 한정자와 혼동을 방지할 수 있습니다.

  • 문자열 구문 분석: 큰따옴표(usebackq 없음) 또는 작은따옴표(usebackq 포함)(예: (MyString) 또는 ('MyString') 중 하나를 래핑 <literalstring> 하여 직접 문자열에서 구문 분석 논리를 사용할 for /f 수 있습니다. <literalstring> 는 파일에서 한 줄의 입력으로 처리됩니다. 큰따옴표로 구문 분석할 <literalstring> 때 (\ & | > < ^)와 같은 명령 기호는 일반 문자로 처리됩니다.

  • 구문 분석 출력: 명령을 사용하여 for /f 괄호 사이에 따옴표를 <command> 묶어 명령의 출력을 구문 분석할 수 있습니다. 자식 Cmd.exe에 전달되는 명령줄로 처리됩니다. 출력은 메모리로 캡처되고 파일인 것처럼 구문 분석됩니다.

예제

사용 하 여 에 대 한 배치 파일에서 다음 구문을 사용 합니다.

for {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]

대체할 수 있는 변수를 사용 하 여 확장명이.doc 또는.txt 있는 현재 디렉터리에 있는 모든 파일의 내용을 표시 하려면 %f, 유형:

for %f in (*.doc *.txt) do type %f

위의 예제에서는 확장명이.doc 또는.txt 현재 디렉터리에 있는 각 파일에 대 한 대체는 %f 모든 파일의 내용이 표시 될 때까지 변수입니다. 배치 파일에서이 명령을 사용 하려면 모든 일치 항목을 바꾸려면 %f%%1합니다. 그렇지 않으면 변수는 무시 하 고 오류 메시지가 표시 됩니다.

파일을 구문 분석 하려면 무시 하 고 주석 처리 된 줄, 유형:

for /f eol=; tokens=2,3* delims=, %i in (myfile.txt) do @echo %i %j %k

이 명령은 myfile.txt의 각 줄을 구문 분석합니다. 세미콜론으로 시작 하는 줄을 무시 하 고 각 줄을에서 두 번째 및 세 번째 토큰을 전달 된 에 대 한 본문 (토큰은 쉼표 또는 공백을로 구분 됨). 본문은 에 대 한 문 참조 %i 토큰을 가져오기 위해 두 번째, %j 세 번째 토큰을 가져오려면 및 %k 모든 나머지 토큰을 가져오려면. 제공하는 파일 이름에 공백이 포함된 경우 텍스트 주위에 따옴표(예: 파일 이름)를 사용합니다. 인용 부호를 사용 하려면 사용 해야 usebackq합니다. 그렇지 않으면 따옴표는 리터럴 문자열을 구문 분석을 정의로 해석 됩니다.

%i 에 명시적으로 선언 되는 에 대 한 문입니다. %j%k 를 사용 하 여 암시적으로 선언 된 토큰 =합니다. 토큰=을 사용하여 문자 z 또는 Z보다 높은 변수를 선언하려고 시도하지 않는 경우 최대 26개의 토큰을 지정할 수 있습니다.

괄호 사이에 집합을 배치하여 명령의 출력을 구문 분석하려면 다음을 입력합니다.

for /f "usebackq delims==" %i in (`set`) do @echo %i

하위 디렉터리를 포함하여 디렉터리에 있는 모든 파일의 재귀 루프를 수행하고 전체 경로를 에코하려면 마지막으로 수정된 경우 및 파일 크기를 입력합니다.

for /r "C:\My Dir\" %A in (*.*) do echo %~ftzA