기금넷 공식사이트 - 재경 문답 - 일괄 처리 매개변수에 대한 자세한 설명

일괄 처리 매개변수에 대한 자세한 설명

FOR 명령의 변수

FOR 명령에는 몇 가지 변수가 있습니다. 많은 초보 친구들이 사용법을 이해하지 못합니다!

먼저 FOR의 모든 변수를 나열합니다.

~I - 따옴표(")를 제거하고 %I를 확장합니다.

%~fI - %I를 정규화된 변수로 확장합니다. 경로 이름

%~dI - %I를 드라이브 문자로만 확장

%~pI - %I를 경로로만 확장

% ~nI - 확장 %I를 파일 이름으로만 확장

%~xI - %I를 파일 확장자로만 확장

%~sI - 짧은 이름만 포함하는 경로 확장

%~aI - 파일의 파일 속성으로 %I 확장

%~tI - 파일의 날짜/시간으로 %I 확장

% ~zI - 파일의 크기로 %I 확장 파일

%~$PATH:I - PATH 환경 변수에 나열된 디렉토리를 찾고 %I

를 찾은 첫 번째 디렉토리로 확장합니다. 환경의 경우 정규화된 이름입니다. 변수 이름

이 정의되지 않았거나 파일을 찾을 수 없는 경우 이 키 조합은

빈 문자열

로 확장됩니다. 각 줄에 대문자 "I"입니다. 이것은 실제로 FOR에 가져온 변수입니다. FOR 문에서 대체한 변수 이름은 무엇입니까? 여기에 적어주세요.

예:FOR /F % %z IN ('set') DO @echo %%z

여기서 대체하는 변수 이름은 z입니다. 그러면 I를 z로 변경해야 합니다. 예를 들어 %~fI를 %~로 변경합니다. fz

이전 %~p 내용은 구문입니다!

설명부터 시작하겠습니다:

~I - 인용 부호를 모두 제거합니다( " ), %I 확장

이 변수의 기능은 설명과 같습니다. 따옴표를 제거하세요!

이 예를 살펴보겠습니다.

먼저 temp.txt라는 A 텍스트 파일을 만들고 그 안에 다음 내용을 입력합니다.

"1111

2222"

"3333"

44 "44

그런 다음 다음 코드를 사용하여 BAT 파일을 만듭니다:

FOR /F "delims=" %%i IN (temp.txt) DO @echo %%~ i

일시 중지

실행 후 다음과 같은 CMD 에코가 표시됩니다.

1111

2222"

3333

44"44

temp.txt의 이전 내용과 비교해 보면 첫 번째와 세 번째 줄의 따옴표가 사라진 것을 확인할 수 있습니다. 따옴표 ~i 작동합니다!

따옴표 삭제 규칙은 다음과 같습니다(BAT 형제님 추가!)

1. 문자열의 시작과 끝 부분에 있는 따옴표를 삭제합니다.

2. 문자열 끝에 따옴표가 없으면 문자열 시작 부분에 있는 따옴표를 삭제합니다.

3. 문자열 중간에 따옴표가 있거나 문자열 끝에만 있으면 삭제되지 않습니다.

%~fI - %I를 정규화된 경로 이름으로 확장합니다.

예 보기:

코드를 어디에든 저장하세요. 여기 있습니다. 데스크탑.

FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~fi

일시 중지

실행 후 다음 내용이 표시됩니다.

C:\Documents and Settings\Administrator\Desktop\test.bat

C:\Documents and Settings\Administrator\Desktop\test.vbs

코드의 %%~fi를 %%i로 직접 변경할 때

FOR /F "delims==" %%i IN ('dir /b') DO @ echo %%i

pause

이 내용은 실행 후 표시됩니다.

test.bat

test.vbs

비교해보면 경로가 없다는 것을 쉽게 알 수 있습니다. 이는 "%I을 정규화된 경로 이름으로 확장"하는 역할입니다.

즉, %i 변수의 내용이 is 파일 이름이 주어지면 파일 이름만 출력하는 대신 파일이 있는 절대 경로를 출력합니다. 직접 실험해 보면 알 수 있습니다!

%~dI - %I만 드라이브 문자로 확장하세요.

예제를 보세요:

코드는 다음과 같습니다. 실행하기 위해 바탕화면에 계속 놓아두었습니다!

FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~di

일시 중지

실행 후 내 CMD는 다음을 표시합니다

C:

C:

내 데스크탑에는 test.bat, test.vbs, %%~di라는 두 개의 파일이 있습니다. %%i 변수의 내용이 파일이나 디렉터리 이름이면 파일이나 디렉터리가 있는 드라이브 기호를 인쇄합니다!

%~pI - %I만 경로로 확장합니다.

이 사용법은 위와 같습니다. 경로만 인쇄하고 파일 이름은 인쇄하지 않습니다.

FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~ pi

pause

결과를 입력하지 않겠습니다. 코드를 복사해서 직접 확인하시면 됩니다. 다음은 모두 이런 식으로 사용됩니다. . 코드가 제공되며 결과를 직접 확인할 수 있습니다!

%~nI - %I을(를) 파일 이름으로만 확장

파일 이름만 인쇄하세요! p>FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~ni

일시 중지

%~xI - %만 확장 I를 파일 확장자로

파일 확장자만 인쇄

FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~xi

일시 중지

%~sI - 확장된 경로에는 짧은 이름만 포함됩니다.

완전한 짧은 파일 이름 인쇄

FOR /F "delims= =" %%i IN ('dir / b') DO @echo %%~si

일시 중지

%~aI - %I를 파일의 파일 속성으로 확장

파일 속성 인쇄

FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~ai

일시 중지<피

>%~tI - %I을 파일의 날짜/시간으로 확장

파일이 생성된 날짜 인쇄

FOR /F "delims==" %%i IN ( 'dir / b') DO @echo %%~ti

일시 중지

%~zI - %I을 파일 크기로 확장

인쇄 파일 크기

p>

FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~zi

일시 중지

%~$PATH :I - PATH 환경 변수에 나열된 디렉토리를 찾고 %I

를 발견된 첫 번째 정규화된 이름으로 확장합니다. 환경 변수 이름

이 정의되지 않았거나 파일을 찾을 수 없는 경우 이 키 조합은

빈 문자열로 확장됩니다.

이것이 마지막입니다 하나와 위의 내용이 다르기 때문에 따로 이야기하겠습니다!

먼저 데스크탑에 temp.txt 파일을 만들고 그 안에 내용을 작성합니다

c:\ windows

c:\windows\system32

c:\windows\teett

그런 다음 이 코드를 일괄 처리로 저장하고 데스크탑에 배치하세요.

p>

FOR / F "delims==" %%i IN (temp.txt) DO @echo %%~$PATH:i

pause

실행 후, CMD는 다음 내용을 표시합니다.

c:\WINDOWS

c:\WINDOWS\system32

ECHO가 켜져 있습니다.

왜 그럴까요? c:\windows\teett라는 줄도 있나요?

CMD에 echo %path%를 직접 입력하면 C:\WINDOWS\가 표시됩니다. system32;C :\WINDOWS;C:\WINDOWS\System32\Wbem

%%~$PATH:i는 내부 콘텐츠가 다음과 같은 경우 텍스트에서 이 PATH 변수의 값과 일치하는 콘텐츠를 찾는 것을 의미합니다. PATH 변수와 같으면 인쇄하세요

같지 않으면 빈 줄이 표시됩니다!

PATH 변수에만 적용 가능하고 다른 변수에는 적용할 수 없습니다. 변수. 많은 값을 비교하고 싶다면 PATH 변수에 값을 할당해 볼 수 있습니다. 저는 테스트해 본 적이 없습니다!

자, FOR 변수 소개는 여기까지입니다!