수색…


통사론

  • / l %% p in (startNumber, increment, endNumber) do 명령
  • / f %% p in (filename) 명령을 입력하십시오.
  • / f %% p in ( "textStrings") do 명령의 경우
  • / f %% p in ( 'command') 명령에 대해
  • / r 드라이브의 경우 : \ path %% p in (set) do 명령
  • / d %% p in (directory) 명령을 입력하십시오.

비고

for 명령은 /f 플래그가 사용될 때 옵션을 승인합니다. 다음은 사용할 수있는 옵션 목록입니다.

  • delims=x 토큰을 구분하는 분리 문자 (들)

  • skip=n 파일 및 텍스트 문자열의 시작 부분에서 건너 뛸 줄 수

  • eol=; 주석을 나타 내기 위해 각 줄의 시작 부분에있는 문자

  • tokens=n 처리 할 각 줄 또는 문자열에서 읽은 번호 매기기 항목

  • usebackq 다른 인용 스타일을 사용하십시오 :

    "파일"의 긴 파일 이름에는 큰 따옴표를 사용하십시오.

    'textStrings'에 작은 따옴표 사용

    `command`에 역 인용 부호 사용

파일 세트의 각 줄 반복

다음은 C:\scripts\testFile.txt 파일의 각 행을 표시합니다. 빈 줄은 처리되지 않습니다.

for /F "tokens=*" %%A in (C:\scripts\testFile.txt) do (
  echo %%A
  rem do other stuff here
  )

고급 예제에서는 FOR 루프에서 파생 된 제한된 파일 집합 데이터를 사용하여 검색된 내용을 파일에 저장하면서 일괄 처리를 리디렉션하는 방법을 보여줍니다.

@echo off
setlocal enabledelayedexpansion

for /f %%i in ('dir "%temp%\test*.log" /o:-d /t:w /b') do (
    set "last=%temp%\%%i"
    type !last! | find /n /i "Completed" >nul 2>&1 >> %temp%\Completed.log ^
     && (echo Found in log %%i & goto :end) || (echo Not found in log %%i & set "result=1"))

:: add user tasks code here
if defined result echo Performing user tasks...

:end    
echo All tasks completed
exit /b

명령 문자열이 여러 코드 행으로 분할되는 기간과 명령 그룹은 괄호로 구분됩니다.

디렉토리 트리에서 재귀 적으로 디렉터리 방문

for /r 명령을 사용하면 디렉터리 트리의 모든 디렉터리를 반복적으로 방문하고 명령을 수행 할 수 있습니다.

@echo off
rem start at the top of the tree to visit and loop though each directory
for /r %%a in (.) do (
  rem enter the directory
  pushd %%a
  echo In directory:
  cd
  rem leave the directory
  popd
  )

노트:

  • / r - 파일을 반복합니다 (하위 폴더 되풀이).
  • pushd - 현재 디렉토리 / 폴더를 변경하고 POPD 명령이 사용할 이전 폴더 / 경로를 저장합니다.
  • popd - PUSHD 명령으로 가장 최근에 저장된 경로 / 폴더로 디렉토리를 다시 변경합니다.

현재 디렉토리의 모든 파일 이름 바꾸기

다음은 for 루프와 함께 변수를 사용하여 파일 그룹의 이름을 바꿉니다.

SetLocal EnableDelayedExpansion

for %%j in (*.*) do (
  set filename=%%~nj
  set filename=!filename:old=new!
  set filename=Prefix !filename!
  set filename=!filename! Suffix
  ren "%%j" "!filename!%%~xj"
  )

변수 이름 %%j 을 정의하고이를 모든 현재 파일 (*.*) 과 연관 시키면 for 루프의 변수를 사용하여 현재 디렉토리의 각 파일을 나타낼 수 있습니다.

루프를 반복 할 때마다 (또는 패스) 정의 된 그룹 (동일한 그룹 일 수 있습니다. 예 : *.jpg 또는 *.txt )의 다른 파일을 처리합니다.

첫 번째 예에서는 텍스트를 "old"텍스트 문자열 대신 "new"라는 텍스트 문자열로 대체합니다 (텍스트 "old"가 파일 이름에있는 경우에만 해당).

두 번째 예에서는 텍스트를 추가합니다. 텍스트 "접두어"가 파일 이름의 시작 부분에 추가됩니다. 이것은 대용품이 아닙니다. 이 변경 사항은 그룹의 모든 파일에 적용됩니다.

세 번째 예제에서는 다시 텍스트를 추가합니다. 텍스트 "접미사"가 파일 이름의 끝에 추가됩니다. 다시 말하지만, 이것은 대체가 아닙니다. 이 변경 사항은 그룹의 모든 파일에 적용됩니다.

마지막 줄은 실제로 이름 바꾸기를 처리합니다.

되풀이

for /L %%A in (1,2,40) do echo %%A

이 행은 1에서 39까지 반복되며 매번 2 씩 증가합니다.

첫 번째 매개 변수 인 1 은 시작 번호입니다.

두 번째 매개 변수 인 2 는 증가분입니다.

세 번째 매개 변수 인 40 이 최대 값입니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow