Windows 배치 파일을 어떻게 반복합니까?


170

Windows 배치 파일에서 FOR 루프의 구문은 무엇입니까?

답변:


128
FOR %%A IN (list) DO command parameters

list 는 공백, 쉼표 또는 세미콜론으로 구분 된 모든 요소의 목록입니다.

명령 은 내부 또는 외부 명령, 배치 파일 또는 OS / 2 및 NT의 경우 명령 목록 일 수 있습니다.

parameters 는 명령에 대한 명령 줄 매개 변수를 포함합니다. 이 예제에서는 지정된 경우 매개 변수를 사용하여 목록의 모든 요소에 대해 명령이 한 번 실행됩니다.

특수한 유형의 매개 변수 (또는 명령)는 %% A이며, 목록에서 각 요소로 연속적으로 대체됩니다.

에서 루프에 대한


3
목록에 범위 (1 ~ 100)를 줄 수 있습니까?
— Pradeep

36
FOR /L %x IN (1,1,100) DO ...
— Joey

주위에 괄호를 넣어 [ parameters ]당신이 당신의 여러 줄에 포함시킬 경우 for루프
— 프랭크 브라이스

1
@aaiezza, 나는 당신의 의견을 둘째로. 나는 지금이 피의 고리와 싸우고 있으며, 예기치 않게 완전히 작동하고 있으며, 출력을보고있는 것을 제어하는 ​​것이 무엇인지 전혀 모른다. 끔찍한 것들. 유용하지만 끔찍합니다.
— RockDoctor

223

x 번 무언가를하고 싶다면 다음과 같이하십시오 :

예 (x = 200) :

FOR /L %%A IN (1,1,200) DO (
  ECHO %%A
)

1,1,200 방법:

  • 시작 = 1
  • 단계 당 증분 = 1
  • 끝 = 200

17
추가해 줘서 고맙습니다. 예제의 시작 값을 증분과 다른 값으로 변경하면 더 명확해질 수 있습니다.
— 워렌 스티븐스

7
최종 값이 포함됩니다.
— Roland Pihlakas

54

유형:

for /?

여러 페이지의 도움말 텍스트가 표시됩니다.


8
나는 DOS / Windows의 다른 버전을 처리하기 때문에 허용되는 대답보다 이것을 선호합니다. "For"는 수년에 걸쳐 상당히 크게 향상되었으며, 어떤 버전이 대상인지 또는 어떤 시나리오가 시도되고 있는지에 대한 질문은 없습니다.
— Mattias Andersson

34

조건부로 명령을 여러 번 수행하십시오.

  • 구문 -FOR- 파일

    FOR %%parameter IN (set) DO command 
    
  • 구문 -FOR- 파일 경로에서 루트

    FOR /R [[drive:]path] %%parameter IN (set) DO command 
    
  • 구문-폴더

    FOR /D %%parameter IN (folder_set) DO command 
    
  • 구문 -FOR- 숫자 목록

    FOR /L %%parameter IN (start,step,end) DO command 
    
  • 구문 -FOR- 파일 내용

    FOR /F ["options"] %%parameter IN (filenameset) DO command 
    

    또는

    FOR /F ["options"] %%parameter IN ("Text string to process") DO command
    
  • 구문 -FOR- 명령 결과

    FOR /F ["options"] %%parameter IN ('command to process') DO command
    

그것

  • 일련의 데이터를 가져옵니다
  • FOR 매개 변수 %%G를 해당 데이터의 일부와 동일하게 만드십시오.
  • 명령을 수행하십시오 (선택적으로 명령의 일부로 매개 변수 사용).
  • -> 각 데이터 항목에 대해 반복

배치 프로그램이 아닌 명령 행에서 FOR 명령을 사용하는 경우 %G대신 1 퍼센트 부호 만 사용하십시오 %%G.

FOR 매개 변수

  • 첫 번째 매개 변수는 단일 문자 (예 : 문자 G)를 사용하여 정의해야합니다.

  • FOR %%G IN ...

    FOR 루프의 각 반복에서 IN ( ....)절이 평가되고 %%G다른 값으로 설정됩니다.

    이 절의 결과 단일 값이면 %% G가 해당 값과 동일하게 설정되고 명령이 수행됩니다.

    절의 결과로 여러 값이 생성되면 각 매개 변수를 보유하도록 추가 매개 변수가 내재적으로 정의됩니다. 이들은 알파벳 순서로 자동 할당됩니다 %%H %%I %%J... (암시 적 매개 변수 정의)

    매개 변수가 파일을 참조하는 경우 확장 변수 참조를 사용하여 파일 이름 / 경로 / 날짜 / 크기를 추출 할 수 있습니다.

    물론 알파벳 이외의 다른 문자를 선택할 수 있습니다 %%G. 그러나 경로 이름 형식 문자 (a, d, f, n, p, s, t, x)와 충돌하지 않으며 암시 적 매개 변수로 사용하기 위해 가장 긴 비 충돌 문자를 제공하기 때문에 좋은 선택입니다 .


1
for 루프를 사용하여 이전에 설정 한 변수에 들어가려면 어떻게해야합니까? 나는 ... .. (할 수 있지만,이 작동하지 않습니다에 "= 토큰 = 2 delims"%% I / F에 대한 (% %)의 시도는 "이 시간에 예상치 못한 ("말을 실패합니다.
— SHIVANI

안녕. 되어 %a%일반 파일의 이름을 지정? 이 형식으로 도움을주기가 어렵습니다. How to Ask를 읽은 후 언제든지 새로운 질문을하십시오 .
— J. Chomel

2
@jumping_monkey, FOR 명령은 숫자가 아닌 문자 (예 : %% G)로 식별되는 매개 변수를 만듭니다. 경로 형식 매개 변수 확장을 적용 할 수도 있습니다. 두 문자 집합 사이의 혼동을 피하려면 문자 (a, d, f, n, p, s, t, x, z)를 FOR 매개 변수로 사용하지 말고 대문자로 된 FOR 매개 변수 문자를 선택하십시오.
— J. Chomel

안녕하세요 @ J.Chomel, So for example in a reference like %%~fG the %%G is the FOR parameter, and the ~f is the Parameter Expansion.있어 (여기)이 [ ss64.com/nt/syntax-args.html ), 당신에게 감사합니다. 힘내 친구 야.
— jumping_monkey

15

FOR 적절한 사용법에 대한 예를 포함하여 FOR 루프에 대해 알아야 할 모든 정보를 제공합니다.


13

이 코드를 사용해보십시오 :

@echo off
color 02
set num1=0
set num2=1 
set terminator=5
:loop
set /a num1= %num1% + %num2%
if %num1%==%terminator% goto close
goto open
:close
echo %num1%
pause 
exit
:open
echo %num1%
goto loop

num1는 증가 될 숫자이고 num2추가 된 값 num1이고 종결자는 종료되는 값 num1입니다. 이 문장에서 다른 종결 자 값을 나타낼 수 있습니다 ( if %num1%==%terminator% goto close). 부울 표현식입니다. 부울이 true 인 경우 goto close는 프로세스이고 부울이 false 인 경우 goto open은 프로세스입니다.


이것은 이해하기 가장 쉬운 방법입니다. 다른 답변은 명령과 플래그의 기능에 대한 설명을 거의 제공하지 않습니다. 자바 스크립트 전용 종류의 사람에게는 배치 파일이 전혀 직관적이지 않습니다.
— 1934286

5
@echo off
echo.
set /p num1=Enter Prelim:
echo.
set /p num2=Enter Midterm:
echo.
set /p num3=Enter Semi:
echo.
set /p num4=Enter Finals:
echo.
set /a ans=%num1%+%num2%+%num3%+%num4%
set /a avg=%ans%/4
ECHO %avg%
if %avg%>=`95` goto true
:true
echo The two numbers you entered were the same.
echo.
pause
exit

5

에서 FOR /?도움말 문서 :

FOR % 변수 IN (세트) DO 명령 [명령 매개 변수]

% variable 단일 문자 교체 가능 매개 변수를 지정합니다.
(세트) 하나 이상의 파일 세트를 지정합니다. 와일드 카드가 사용될 수 있습니다. command 각 파일에 대해 수행 할 명령을 지정합니다.
command-parameters
지정된 명령에 대한 매개 변수 또는 스위치를 지정합니다.

배치 프로그램에서 FOR 명령을 사용하려면 % variable 대신 %% variable을 지정
하십시오. 변수 이름은 대소 문자를 구분하므로 % i는
% I 와 다릅니다 .

명령 확장자가 사용 가능한 경우 다음과 같은 추가
형식의 FOR 명령이 지원됩니다.

FOR / D % 변수 IN (set) DO 명령 [명령 매개 변수]

If set contains wildcards, then specifies to match against directory  
names instead of file names.                                          

FOR / R [[드라이브 :] 경로] % 변수 IN (세트) DO 명령 [명령 매개 변수]

Walks the directory tree rooted at [drive:]path, executing the FOR    
statement in each directory of the tree.  If no directory             
specification is specified after /R then the current directory is     
assumed.  If set is just a single period (.) character then it        
will just enumerate the directory tree.                               

FOR / L % 변수 IN (시작, 단계, 종료) DO 명령 [명령 매개 변수]

The set is a sequence of numbers from start to end, by step amount.   
So (1,1,5) would generate the sequence 1 2 3 4 5 and (5,-1,1) would   
generate the sequence (5 4 3 2 1)                                     
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.