배치 스크립트루프
명령어를 100~200회 실행해야 합니다.지금까지의 조사에 따르면 이 명령어의 복사본 100개를 복사/붙여넣거나for루프, 단,forloop은 아이템 목록을 기대하기 때문에 200개의 파일 또는 200개의 아이템 목록이 필요합니다.
저는 C 프로그램을 작성하지 않아도 되고, 테스트 목적으로 프로그램을 실행하기 위해 다른 프로그램을 작성해야 하는 이유를 문서화하는 과정을 거치지 않아도 됩니다.프로그램 자체를 수정하는 것도 선택사항이 아닙니다.
그래서, 명령이 내려지면a, 어떻게 실행 방법N배치 스크립트를 통해 몇 번입니까?
주의: 무한 루프는 필요 없습니다.
예를 들어 Javascript에서는 다음과 같이 표시됩니다.
var i;
for (i = 0; i < 100; i++) {
console.log( i );
}
Windows에서 실행되는 배치 스크립트의 경우 어떻게 됩니까?
for /l당신의 친구:
for /l %x in (1, 1, 100) do echo %x
1에서 시작하여 1단계씩, 100에서 끝납니다.
경고: 사용%%대신%다음과 같은 배치 파일에 있는 경우:
for /l %%x in (1, 1, 100) do echo %%x
(이것은, Windows 스크립팅의 정말로 싫은 점 중 하나입니다).
루프의 각 반복에 대해 여러 명령어가 있는 경우 다음 절차를 수행합니다.
for /l %x in (1, 1, 100) do (
echo %x
copy %x.txt z:\whatever\etc
)
또는 배치 파일로
for /l %%x in (1, 1, 100) do (
echo %%x
copy %%x.txt z:\whatever\etc
)
키:
/l는,for명령어는 일련의 파일로 동작하는 것이 아니라 수치적으로 동작합니다.
%xloops 변수입니다.
(시작값, 증분값, 종료조건 [최종값])
디렉토리의 파일을 반복하려면:
@echo off
setlocal enableDelayedExpansion
set MYDIR=C:\something
for /F %%x in ('dir /B/D %MYDIR%') do (
set FILENAME=%MYDIR%\%%x\log\IL_ERROR.log
echo =========================== Search in !FILENAME! ===========================
c:\utils\grep motiv !FILENAME!
)
enableDelayedExpansion을 사용해야 합니다.및사용해야합니다.$FILNAME$ 대신 FILNAME!을 클릭합니다.두 번째 경우 DOS는 변수가 루프에 들어가기 전에 한 번만 해석하고 프로그램이 루프될 때마다 해석하지 않습니다.
단순하지만 카운트된 루프의 템플릿:
set loopcount=[Number of times]
:loop
[Commands you want to repeat]
set /a loopcount=loopcount-1
if %loopcount%==0 goto exitloop
goto loop
:exitloop
예를 들어:"Hello World!"라고 5번 말합니다.
@echo off
set loopcount=5
:loop
echo Hello World!
set /a loopcount=loopcount-1
if %loopcount%==0 goto exitloop
goto loop
:exitloop
pause
다음으로 출력 예를 나타냅니다.
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Press any key to continue . . .
이 방법을 시도해 볼 수도 있습니다.for루프:
set count=0
:loop
set /a count=%count%+1
(Commands here)
if %count% neq 100 goto loop
(Commands after loop)
그것은 꽤 작고 내가 항상 사용하는 것이다.
FOR 루프를 회피하는 다음과 같은 효과를 얻을 수 있습니다.
set counter=0
:loop
echo "input commands here"
SET /A counter=%counter%+1
if %counter% GTR 200
(GOTO exit) else (GOTO loop)
:exit
exit
또는 루프할 횟수만큼 변수를 감소/증가할 수 있습니다.
SETLOCAL ENABLEDELAYEDEXPANSION
SET counter=200
:Beginning
IF %counter% NEQ 0 (
echo %x
copy %x.txt z:\whatever\etc
SET /A counter=%counter%-1
GOTO Beginning
) ELSE (
ENDLOCAL
SET counter=
GOTO:eof
물론,FOR /L고속도로가 있고 여기가 더 오래 걸리는 뒷골목인데 같은 목적지에 도착해요.
라벨을 사용하여 cmd 프로그래밍에서 루핑을 구현하는 매우 기본적인 방법
@echo off
SET /A "index=1"
SET /A "count=5"
:while
if %index% leq %count% (
echo The value of index is %index%
SET /A "index=index + 1"
goto :while
)
이 작업을 수행할 때는for^.disc
@echo off
:SPINNER
SET COUNTP1=1
:1
CLS
:: YOUR COMMAND GOES HERE
IF !COUNTP1! EQU 200 goto 2
SET COUNTP1=1
) ELSE (
SET /A COUNTP1+=1
)
goto 1
:2
:: COMMAND HAS FINISHED RUNNING 200 TIMES
기본적인 이해력이 있습니다.그냥 한번 테스트해봐.:P
DOS는 이를 위한 매우 우아한 메커니즘을 제공하지 않지만, 그래도 합리적인 노력으로 100 또는 200회 반복에 대한 루프를 코드화할 수 있다고 생각합니다.for'''이래서''는 이래서''가 아니라 ''이래서''는요.
GOTO를마다 GOTO를 합니다.SET X=%X%@ 번 더하다@X에 의 값을 의 합니다.루프를 종료하려면 X의 값을 문자열 100(또는 200)과 비교합니다.@signsdiscloss.discloss를 합니다.
난 이게 우아하다고 말한 적 없지만, 잘 될 거야!
이거 써요.그것은 다른 것과 거의 비슷하지만, 단지 그것을 쓰는 또 다른 방법일 뿐이다.
@ECHO off
set count=0
:Loop
if %count%==[how many times to loop] goto end
::[Commands to execute here]
set count=%count%+1
goto Loop
:end
정답은 배치에 대해 얼마나 잘 알고 있는지에 따라 달라집니다.만약 경험이 없다면 루프 변수를 늘릴 것을 권장합니다.
@echo off
set /a loop=1
:repeat
echo Hello World!
set /a loop=%loop%+1
if %loop%==<no. of times to repeat> (
goto escapedfromrepeat
)
goto repeat
:escapedfromrepeat
echo You have come out of the loop
pause
에 대해 좀 더 , 저는 보다 하고 싶습니다.for /l %loop in (1, 1, 10) do echo %loop더 나은 선택입니다.
(start at 1, go up in 1's, end at 10)
for /l %[your choice] (start, step, end) do [command of your choice]
완전 무결점 루프
set num=0
:loop
:: insert code
set /a num=%num%+1
if %num% neq 10 goto loop
::insert after code code
5행의 10을 임의의 수치로 변경하여 루프 회수를 나타냅니다.
이와 같은 답변이 이미 제출되었는지 모르겠지만 다음과 같이 시도해 볼 수 있습니다.
@echo off
:start
set /a var+=1
if %var% EQU 100 goto end
:: Code you want to run goes here
goto start
:end
echo var has reached %var%.
pause
exit
변수 %var%는 프로그램이 실행을 완료했음을 출력하는 100에 도달할 때까지 1씩 증가합니다.다시 말씀드리지만, 제출이 되었는지 아닌지는 모르겠지만, 가장 컴팩트한 것 같습니다.
FOR /l 사용하세요.%%%그게 두통을 덜어줄 거예요.
루프를 설정해 보겠습니다.
(편집) 100번 하고 멈추도록 만들었어요.
@echo off
goto actual
set /a loopcount=0
:actual
set /a loopcount=%loopcount% + 1
echo %random% %random% %random% %random%
timeout 1 /nobreak>nul
if %loopcount%== 100 goto stop
goto actual
:stop
exit
이렇게 하면 1초마다 100번씩 4개의 난수가 생성됩니다."timeout 1 / nobreak > nul"을 꺼내면 매우 빠르게 진행할 수 있습니다.
두 가지 답이 있습니다. 방법 1: Javascript를 배치에 삽입하십시오.
@if (@a==@b) @end /*
:: batch portion
@ECHO OFF
cscript /e:jscript "%~f0"
:: JScript portion */
Input Javascript here
(JavaScript에 대해서는 잘 모릅니다.)
방법 2: 배치에서의 루프
@echo off
set loopcount=5
:loop
echo Hello World!
set /a loopcount=loopcount-1
if %loopcount%==0 goto exitloop
goto loop
:exitloop
pause
(고마워 Fluoric Green5)
언급URL : https://stackoverflow.com/questions/2591758/batch-script-loop
'programing' 카테고리의 다른 글
| Excel VBA에서 변경된 셀의 이전 값을 얻으려면 어떻게 해야 합니까? (0) | 2023.04.09 |
|---|---|
| 셸 스크립트에서 하위 문자열 하나를 다른 문자열로 바꿉니다. (0) | 2023.04.09 |
| 문자열에 문자가 있는지 테스트합니다. (0) | 2023.04.09 |
| 무료 WPF 컨트롤 및 컨트롤 템플릿은 어디서 구할 수 있습니까? (0) | 2023.04.09 |
| TABLOCK vs TAB록X (0) | 2023.04.09 |