DOS 일괄 처리 고급 튜 토리 얼 제2 장 DOS 순환 for 명령 상세 설명

8296 단어 DOS 순환for
FOR 를 말 하기 전에 초보 친구 들 에 게 먼저 알려 줍 니까?명령 이 있 으 면 CMD 아래 에 입력 하 세 요.
name /? 이러한 형식 은 시스템 이 제공 하 는 도움말 파일 을 볼 수 있 습 니 다.예 를 들 어 for/?FOR 명령 의 도움 을 모두 보 여 줍 니 다!물론 많은 풋내기 들 이 못 알 아 보 겠 지만.............................................................나 도 초보 들 을 돌 보고 FOR 명령 을 내 방식 으로 설명해 줄 게!
본 격 시작:
기본 형식
FOR %%variable IN (set) DO command [command-parameters]
%%variable 는 바 꿀 수 있 는 매개 변 수 를 단일 알파벳 으로 지정 합 니 다.
(set)파일 하나 또는 그룹 을 지정 합 니 다.마스크 를 사용 할 수 있 습 니 다.
command 는 모든 파일 에 대한 명령 을 지정 합 니 다.
command-parameters 는 특정 명령 에 매개 변수 나 명령 행 스위치 를 지정 합 니 다.
인자:FOR 는 4 개의 인자/d/l/r/r/f 가 있 습 니 다.
지금부터 매개 변수의 뜻 을 말씀 드 리 겠 습 니 다.
매개 변수
FOR /D %%variable IN (set) DO command [command-parameters]
마스크 를 집중 적 으로 포함 하면 파일 이름과 일치 하지 않 고 디 렉 터 리 이름과 일치 하도록 지정 합 니 다.
Set(즉,내 가 위 에 쓴'관련 파일 이나 명령')에 마스크(*와?)가 포함 되 어 있다 면,Set 와 일치 하 는 모든 디 렉 터 리(지정 한 디 렉 터 리 의 파일 그룹 이 아 닌)에 지정 한 Command 를 실행 합 니 다.
이 매개 변 수 는 주로 디 렉 터 리 검색 에 사 용 됩 니 다.파일 을 검색 하지 않 습 니 다.이러한 예 를 보 세 요.

@echo off
for /d %%i in (c:\*) do echo %%i
pause
실행 은 CD 루트 디 렉 터 리 의 모든 디 렉 터 리 이름 을 인쇄 합 니 다.파일 이름 은 하나 도 표시 되 지 않 습 니 다!
예 를 들 어 현재 경로 에서 폴 더 의 이름 을 1-3 글자 만 꺼 내 려 고 합 니 다.

@echo off
for /d %%i in (???) do echo %%i
pause
그러면 현재 디 렉 터 리 에 디 렉 터 리 이름 이 1-3 글자 만 있 으 면 표시 되 고 없 으 면 표시 되 지 않 습 니 다.
여기*번 과?번호 의 역할,*번 호 는 임의의 N 자 를 나타 내 는데?번 호 는 임의의 문자 만 표시 합 니 다.
역할 을 알 겠 습 니 다.여러분 에 게 사고 문 제 를 드 리 겠 습 니 다!

@echo off
for /d %%i in (window?) do echo %%i
pause
CD 에 저장 해서 실행 하면 무엇 을 표시 합 니까?혼자 보 세 요!표시:윈도 우즈
/D 인 자 는 현재 디 렉 터 리 에 있 는 디 렉 터 리 이름 만 표시 할 수 있 습 니 다.이것 은 여러분 이 주의해 야 합 니 다!
매개 변수/R
FOR /R [[drive:]path] %%variable IN (set) DO command [command-parameters]
디 렉 터 리 마다 FOR 문 구 를 가리 키 는[drive:]path 를 루트 로 하 는 디 렉 터 리 트 리 를 검사 합 니 다./R 이후 에 디 렉 터 리 가 지정 되 지 않 으 면 현재 디 렉 터 리 를 사용 합 니 다.집합 이 하나의 점(.)문자 일 경우 이 디 렉 터 리 트 리 를 매 거 합 니 다.
귀착 하 다
위 에서 우 리 는 알 고 있 습 니 다./D 는 현재 경로 아래 의 디 렉 터 리 이름 만 표시 할 수 있 습 니 다.그러면 지금 이/R 도 디 렉 터 리 와 관련 이 있 습 니 다.그 가 무엇 을 할 수 있 습 니까?안심 하 세 요.그 는/D 보다 훨씬 낫 습 니 다!
그 는 현재 또는 당신 이 지정 한 경로 아래 의 파일 이름 을 모두 읽 을 수 있 습 니 다.파일 이름 이 므 로 예 를 들 어 볼 필요 가 있 습 니까?
2 시 주의 하 세 요:
set 에 있 는 파일 이름 에 마스크 가 있 으 면(?또는*),/R 매개 변수 가 지정 한 디 렉 터 리 와 그 아래 에 사 용 된 하위 디 렉 터 리 에 set 와 일치 하 는 모든 파일 을 열거 하고,파일 에 일치 하지 않 는 디 렉 터 리 는 열거 하지 않 습 니 다.
반면 set 에 구체 적 인 파일 이름 이 있 고 어댑터 가 포함 되 어 있 지 않 으 면 이 디 렉 터 리 트 리(즉,이 디 렉 터 리 와 아래 의 모든 하위 디 렉 터 리 를 열거 하 는 것)를 매 거 합 니 다.set 에 지정 한 파일 이 존재 하 든 없 든 간 에.이것 은 앞에서 말 한 한 점(.)개의 목록 기록 트 리 와 같은 이치 입 니 다.한 점 은 현재 디 렉 터 리 를 대표 하고 파일 로 볼 수 있 습 니 다.
예:

@echo off
for /r c:\ %%i in (*.exe) do echo %%i
pause
우리 가 이 BAT 를 D 디스크 어디 에 저장 하고 실행 하면 나 는 그 가 CD 루트 디 렉 터 리 와 각 디 렉 터 리 의 하위 디 렉 터 리 아래 의 모든 EXE 파일 을 열거 하 는 것 을 볼 수 있 을 것 이다!!!!
예:

@echo off
for /r %%i in (*.exe) do @echo %%i
pause
매개 변수 가 다 르 죠?이 명령 앞 에 그 C:\,즉 검색 경 로 를 추가 하지 않 았 습 니 다.그러면 그 는 현재 디 렉 터 리 를 검색 경로 로 합 니 다.예 를 들 어 BAT 는 그 를 d:\test 디 렉 터 리 에 두 고 실행 하면 D:\test 디 렉 터 리 와 그의 아래 하위 디 렉 터 리 의 모든 EXE 파일 을 열거 합 니 다!!
예:

@echo off
for /r c:\ %%i in (boot.ini) do echo %%i
pause
이 예 를 실행 하면 c 디스크 의 모든 디 렉 터 리 를 열 거 했 습 니 다.boot.ini 에 존재 하 는 디 렉 터 리 만 열거 하기 위해 다음 과 같이 변경 할 수 있 습 니 다.

@echo off
for /r c:\ %%i in (boot.ini) do if exist %%i echo %%i
pause
이 명령 으로 파일 을 검색 하 니 정말 좋 네요...
이 매개 변 수 는 여러분 이 이해 하 셨 겠 죠!재 미 있 는 명령 이 야!
매개 변수/L
FOR /L %%variable IN (start,step,end) DO command [command-parameters]
이 집합 은 증분 형식 으로 시작 해서 끝 날 때 까지 의 숫자 서열 을 나타 낸다.따라서(1,1,5)서열 1,2,3,45,(5,-1,1)서열(5,4,3,2 1)이 생 긴 다.
교체 변 수 를 사용 하여 시작 값(Start\#)을 설정 한 다음 에 설정 한 종료 값(End\#)을 초과 할 때 까지 범위 의 값 을 점차적으로 실행 합 니 다./L 은 Start\#와 End\#를 비교 하여 교체 변 수 를 실행 합 니 다.Start\#이 End\#보다 작 으 면 이 명령 을 수행 합 니 다.교체 변수 가 End\#를 초과 하면 명령 해석 프로그램 이 이 순환 을 종료 합 니 다.마이너스 Step\#를 사용 하여 이 범위 내의 값 을 점차 줄 일 수 있 습 니 다.예 를 들 어(1,1,5)생 성 서열 은 1,2,3,45 이 고(5,-1,1)생 성 서열(5,4,3,2 1)이다.문법 은:
이거 보면 어 지 럽 죠?우 리 는 예 를 보면 어 지 럽 지 않다!

@echo off
for /l %%i in (1,1,5) do @echo %%i
pause
실행 효 과 를 저장 합 니 다.그 는 1,2,3,4,5 와 같은 5 개의 숫자(1,1,5)를 인쇄 합 니 다.이 매개 변 수 는 1 부터 1 을 추가 할 때마다 5 가 종 료 될 때 까지!
어 지 러 우 면 숫자 를 인쇄 해서 P 용 으로...네,만족 시 켜 드 리 겠 습 니 다.이 예 를 보 세 요.

@echo off
for /l %%i in (1,1,5) do start cmd
pause
실행 후 깜짝 놀 랐 죠?왜 CMD 창 이 5 개 더 생 겼 어 요?하하!그것(1,1,5)을(1,1,65535)으로 바 꾸 면 어떤 결과 가 나 올 지 먼저 말씀 드 리 겠 습 니 다.65535 개의 CMD 창 을 열 겠 습 니 다.
물론 우리 도 그 start cmd 를 md%%i 로 바 꿀 수 있 습 니 다.그러면 지정 한 디 렉 터 리 를 만 들 수 있 습 니 다!!이름 은 1-65535.
이 파괴 적 인 파 라 메 터 를 보고 마지막 파 라 메 터 를 보 겠 습 니 다.
매개 변수/F
\\교체 및 파일 분석
명령 출력,문자열,파일 내용 을 처리 하기 위해 파일 분석 을 사용 합 니 다.검사 할 내용 이나 문자열 을 교체 변 수 를 사용 하고 각종 options 옵션 을 사용 하여 해석 방식 을 수정 합 니 다.options 토 큰 옵션 을 사용 하여 교체 변수 로 전달 해 야 할 토 큰 을 지정 합 니 다.주의:영패 옵션 을 사용 하지 않 았 을 때/F 는 첫 번 째 영패 만 검사 합 니 다.
파일 분석 과정 은 출력,문자열,파일 내용 을 읽 고 독립 된 텍스트 줄 로 나 누 며 줄 마다 0 개 이상 의 토 큰 으로 해석 하 는 것 을 포함한다.그리고 영패 로 설 정 된 교체 변수 값 을 통 해 for 순환 을 호출 합 니 다.기본적으로/F 는 각 파일 의 줄 마다 첫 번 째 공백 구분 기 호 를 전달 합 니 다.빈 줄 을 뛰어넘다.
자세 한 도움말 형식 은:
FOR /F ["options"] %%variable IN (file-set) DO command [command-parameters]
FOR /F ["options"] %%variable IN ("string") DO command [command-parameters]
FOR /F ["options"] %%variable IN ('command') DO command [command-parameters]
따옴표 가 있 는 문자열'options'는 하나 이상 의 해석 옵션 을 지정 하 는 키 워드 를 포함 합 니 다.이 키워드 들 은:
eol=c-한 줄 주석 문자 의 끝 을 가리 키 는 말(하나만)
skip=n-파일 을 시작 할 때 무시 하 는 줄 수 를 말 합 니 다.
delims=xxx-구분자 집합 을 가리킨다.빈 칸 과 점프 키 의 기본 구분자 집합 을 바 꾸 었 습 니 다.
tokens=x,y,m-n-줄 마다 어떤 기호 가 교체 되 는 for 자체 에 전달 되 는 지 말 합 니 다.이것 은 추가 변수 이름 의 분 배 를 초래 할 수 있다.m-n 형식 은 하나의 범위 입 니 다.nth 기 호 를 통 해 mth 를 지정 합 니 다.기호 문자열 의 마지막 문자 별표 가 있 으 면 추가 변 수 는 마지막 기호 해석 후에 줄 의 보존 텍스트 를 분배 하고 받 아들 일 것 입 니 다.테스트 를 통 해 이 매개 변 수 는 최대 31 개의 필드 만 구분 할 수 있다.
usebackq-사용 후 따옴표(키보드 의 숫자 1 왼쪽 에 있 는 그 키').
인자 usebackq 를 사용 하지 않 았 을 때:file-set 는 파일 을 표시 하지만 빈 칸 을 포함 할 수 없습니다.
따옴표 는 문자열,즉"string"을 표시 합 니 다.
작은 따옴표 는 명령 을 실행 하 는 것 을 나타 낸다.즉,'command'이다.
인자 usebackq 를 사용 할 때:file-set 와"file-set"는 모두 파일 을 표시 합 니 다.
파일 경로 나 이름 에 빈 칸 이 있 을 때 두 따옴표 로 묶 을 수 있 습 니 다.
작은 따옴표 는 문자열,즉'string'을 표시 합 니 다.
후 따옴표 는 명령 집행,즉'command'를 나타 낸다.
이상 은 for/?명령 으로 얻 은 도움말 정 보 를 직접 복사 합 니 다.
어 지 러 워!제 가 예 를 들 어 여러분 이 이 매개 변 수 를 이해 하도록 돕 겠 습 니 다!
명령 예 1:*********************************************************************

@echo off
rem         test.txt
echo ;   ,      ,     >test.txt
echo 11  12  13  14  15  16  >>test.txt
echo 21 ,22 ,23 ,24 ,25 ,26  >>test.txt
echo 31 -32 -33 -34 -35 -36  >>test.txt
FOR /F "eol=; tokens=1,3* delims=,- " %%i in (test.txt) do echo %%i %%j %%k
Pause
Del test.txt
실행 결과:
11 단 13 단 14 단 15 단 16 단
21 단 23 단 24 단,25 단,26 단
31 단 33 단 34 단-35 단-36 단
임의의 버튼 을 눌 러 계속 하 세 요..
왜 이러 지?내 가 설명 할 게.
eol=; 분점 으로 시작 하 는 행동 주석 줄
tokens=1,3*각 줄 의 1 단,3 단 과 나머지 필드 에 각각 변수%i,%j,%k 를 부여 합 니 다.
delims=,-(감호 후 빈 칸 이 있 음)쉼표 감호 와 빈 칸 을 구분자 로 하고 빈 칸 은 마지막 에 두 어야 합 니 다.
For 명령 례 2:********************************************************************

@echo off
FOR /F "eol= delims=" %%i in (test.txt) do echo %%i
Pause
실행 하면 test.txt 의 모든 내용 을 표시 합 니 다.주석 줄 을 포함 하여 설명 하지 않 습 니 다.
For 명령 례 3:******************************************************************
또한/F 인 자 는 출력 명령 의 결과 로 이 예 를 볼 수 있 습 니 다.

@echo off
FOR /F "delims=" %%i in ('net user') do @echo %%i
pause
이렇게 하면 이 컴퓨터 의 모든 계 정 이름 이 나 옵 니 다.확장 번호 안의 내용 을 두 개의 작은 따옴표 로 일 으 키 면 명령 이 실 행 될 때 FOR 는 명령 의 모든 줄 결 과 를 되 돌려 줍 니 다.그'delims='을 추가 하 는 것 은 제 빈 줄 이 전체 줄 로 표시 되 고 추가 하지 않 으 면 빈 칸 왼쪽 열 만 표시 하기 위해 서 입 니 다!
기본적으로 FOR 의 기본 적 인 용법 을 다 말 했 습 니 다.FOR 의 시스템 도움 을 보 았 다 면 그 아래 에 특별히 정 의 된 변수 가 있다 는 것 을 알 게 될 것 입 니 다.이런 것들 은 제 가 먼저 말 하지 않 겠 습 니 다.모두 가 피곤 하 겠 죠?너 안 피곤 해.나 피곤 해...

좋은 웹페이지 즐겨찾기