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.