>
누구든지 이것을 설명 할 수 있습니까? 이 방법을 사용하여 Windows 명령 프롬프트를 사용하여 루프를 계산할 수 있습니다.

SET /A XCOUNT=0
:loop
SET /A XCOUNT+=1
echo %XCOUNT%
IF "%XCOUNT%" == "4" (
  GOTO end
) ELSE (
  GOTO loop
)
:end

그러나이 방법은 작동하지 않습니다 (파일의 각 줄마다 "1"을 출력합니다). 변수가 범위를 벗어난 것처럼 작동합니다.

SET /A COUNT=1
FOR /F "tokens=*" %%A IN (config.properties) DO (
  SET /A COUNT+=1
  ECHO %COUNT%
)

  • 답변 # 1

    전체 for 때문에 작동하지 않습니다.   for 에서 루프  마지막 닫는 괄호로,그들 사이의 명령을 포함하여) 실행되면실행하기 전에평가됩니다. 즉, %count%  값 1 로 바뀝니다.  루프를 실행하기 전에

    필요한 것 :

    setlocal enableextensions enabledelayedexpansion
    set /a count = 1
    for /f "tokens=*" %%a in (config.properties) do (
      set /a count += 1
      echo !count!
    )
    endlocal
    
    

    ! 를 사용한 확장 지연   % 대신  당신에게 예상되는 행동을 줄 것입니다. 여기도 참조하십시오.

    <시간>

    또한 setlocal/endlocal 를 명심하십시오  실제로는 누출되지 않도록 내부에서 변경된 것들의 범위를 제한합니다. count 를 사용하려면   endlocal , 발생한 문제로 인해 가능한 "트릭"을 사용해야합니다.

    endlocal && set count=%count%
    
    

    와이즈 위즈라고합시다  내부 범위 내에서 7이되었습니다. 전체 명령은 실행 전에 해석되므로 실제로 다음과 같이됩니다.

    count
    
    

    그런 다음실행되면 내부 범위가 닫히고 endlocal && set count=7 를 반환합니다.  원래의 가치입니다. 그러나 count 의 설정 이후  외부 범위에서 7 개까지 발생하면 필요한 정보가 효과적으로 유출됩니다.

    여러 하위 명령을 묶어 필요한만큼 정보를 유출 할 수 있습니다 :

    count
    
    

  • 답변 # 2

    a = 1 ~ 100 1 단계

    Windows의 명령 줄. 배치 파일에서 실행중인 경우 %% a를 사용하십시오.

    endlocal && set count=%count% && set something_else=%something_else%
    
    

  • 답변 # 3

    10.x.x.x 주소를 모두 생성하는 배치 파일은 다음과 같습니다

       for /L %a in (1,1,100) Do echo %a
    
    

    @echo off SET /A X=0 SET /A Y=0 SET /A Z=0 :loop SET /A X+=1 echo 10.%X%.%Y%.%Z% IF "%X%" == "256" ( GOTO end ) ELSE ( GOTO loop2 GOTO loop ) :loop2 SET /A Y+=1 echo 10.%X%.%Y%.%Z% IF "%Y%" == "256" ( SET /A Y=0 GOTO loop ) ELSE ( GOTO loop3 GOTO loop2 ) :loop3 SET /A Z+=1 echo 10.%X%.%Y%.%Z% IF "%Z%" == "255" ( SET /A Z=0 GOTO loop2 ) ELSE ( GOTO loop3 ) :end

관련 자료

  • 이전 unicode - FPDF utf-8 인코딩 (HOW-TO)
  • 다음 r - eval (predvars, data, env) 오류 - 'rm'개체를 찾을 수 없습니다