Windows Bat 스크립트에서 1부터 n까지의 루프 카운트


25

bat 스크립트 파일 내에서 windows 명령을 n 번 실행해야합니다. 다양한 프로그래밍 언어 로이 작업을 수행하는 방법을 알고 있지만 Windows 명령 줄에서 올바르게 가져올 수는 없습니다.

나는 다음과 같은 것을 기대할 것이다.

for(int i = 0; i < 100; i++) {
   // do something
}

또는 이것조차도 (전적으로 심각하지는 않지만)

1.upto(100, {
   // do something
}) 

감사!

편집하다

java, perl, c 또는 이와 같은 bat 스크립트를 생성하는 모든 프로그램을 작성할 수 있습니다.

for %%N in (1 2 3 4 5 6 7 8 9 10 11 12) do echo %%N

등등. 또는 "더 나은"것 :

echo 1
echo 2
echo 3
echo 4
echo 5
echo 6
echo 7
echo 8
echo 9
echo 10
echo 11
echo 12

그런 다음 실행하십시오 ...하지만 문제는 스크립트 에서 반복 할 숫자 범위를 지정하는 간결한 방법이 필요하다는 것입니다 .

감사!


1
여기에 대한 답은 완벽하지만 하나님의 사랑에 대한 것입니다. 정말? 더 현대적인 언어로 옮기는 것이 좋습니다.
EBGreen 14:09

그가 문제에 대한 선택을 한 것처럼 들리지 않습니다.
wolfgangsz

나는 선택의 여지가 없음을 의미하는 것을 보지 못했습니다. 사실 그는 "어떤"언어로도 글을 쓸 수 있다고 말했기 때문에 더 자세한 정보 없이는 선택의 여지가 있다고 생각합니다.
EBGreen

여러분, 저는 스크립트로 현대 언어로 작성된 코드를 배포해야합니다 ...
raoulsson

1
필요할 수도 있고 필요하지 않을 수도 있습니다. 때로는 작업에 적합한 도구 일 수도 있습니다. bash, python, perl 등은 물론 Windows XP 또는 2003 서버 상자에 설치되어있는 powershell을 보장 할 수 없습니다. 배치는 완벽하게 수용 가능한 솔루션입니다.
Goyuix

답변:


44

다음과 같이 비슷하게 할 수 있습니다.

ECHO Start of Loop

FOR /L %i IN (1,1,5) DO (
  ECHO %i
)

1,1,5는 다음과 같이 디코딩됩니다.

(start,step,end)

또한 배치 파일에이 파일을 포함하는 경우 변수 앞에 접두사를 붙이기 위해 이중 백분율 기호 (%%)를 사용해야합니다. 그렇지 않으면 명령 해석기가 루프를 실행하기 전에 변수 % i를 평가하려고합니다.


3
"ECHO 루프 시작"은 시작뿐만 아니라 각 단계에서 실행됩니다.
추후 공지가있을 때까지 일시 중지되었습니다.

1
또한 @부호를 사용 하면 명령 행에서 실행될 때 명령이 인쇄되지 않습니다. "... DO @ (..."
. 일시 중지 추후 공지가있을 때까지

이것은 "FOR"다음의 / L에서만 작동합니다. 왜 그래?
raoulsson

1
를 위해 /? FOR / L % variable IN (시작, 단계, 종료) DO 명령 [명령 매개 변수] 세트는 시작부터 끝까지의 단계 순서에 따른 일련의 숫자입니다. 따라서 (1,1,5)는 시퀀스 1 2 3 4 5를 생성하고 (5, -1,1)은 시퀀스 (5 4 3 2 1)을 생성합니다
EBGreen

%%i텍스트 에 사용 %i하고 명령 줄에서 직접 실행하기위한 주석을 추가하는 것이 좋습니다. 대부분의 사용자는 BAT 파일로 테스트하여 오류가 발생하는 이유 (예 : 나)를 찾으려고 시도합니다.
i486


6

명령 행에서 직접 :

for /L %n in (1,1,100) do @echo %n

배치 파일 사용

@echo off
for /L %%n in (1,1,100) do echo %%n

디스플레이 :

1
2
3
...
100

숫자 시퀀스가 ​​0001 ~ 00100+ 등이면 어떻게 되나요?
nwgat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.