DOS 일괄 처리 고급 튜 토리 얼 제3 장 FOR 명령 의 변수
먼저 FOR 의 변 수 를 모두 열거 합 니 다:
~I - 모든 따옴표 삭제("),확장%I
%~fI - %I 를 완전히 합 격 된 경로 이름 으로 확장
%~dI - %I 만 드라이브 번호 로 확장
%~pI - %I 만 한 경로 로 확장
%~nI - %I 만 파일 이름 으로 확장
%~xI - %I 만 파일 확장자 로 확장
%~sI - 확장 경 로 는 짧 은 이름 만 포함 되 어 있 습 니 다.
%~aI - %I 파일 속성 으로 확장
%~tI - %I 파일 의 날짜/시간 으로 확장
%~zI - %I 파일 크기 로 확장
%~$PATH:I - 경로 환경 변수 에 열 거 된 디 렉 터 리 를 찾 고%I 를 찾 은 첫 번 째 완전히 합 격 된 이름 으로 확장 합 니 다.환경 변수 이름 이 정의 되 지 않 거나 파일 을 찾 지 못 하면 이 조합 키 는 빈 문자열 로 확 장 됩 니 다.
우 리 는 줄 마다 대문자'I'가 있 는 것 을 볼 수 있다.이 I 는 사실은 우리 가 FOR 에서 가 져 온 변수 이다.우리 FOR 문 구 를 대 입 한 변수 이름 이 무엇 인지 여기에 뭐라고 쓰 여 있다.
FOR/F %%z IN ('set') DO @echo %%z
여기 서 우리 가 대 입 한 변수 이름 은 z 입 니 다.그러면 우 리 는 그 I 를 z 로 바 꿔 야 합 니 다.예 를 들 어%~fI 를%~fz 로 바 꿔 야 합 니 다.
앞의%~p 에 대해 서 는 문법 입 니 다!
자,설명 시작:
하나~I - 모든 따옴표 삭제("),확장%I
이 변수의 역할 은 그의 설명 과 같이 따옴표 를 삭제 합 니 다!
우 리 는 이 예 를 보 자.
우선 임시 파일 temp.txt 를 만 듭 니 다.내용 은 다음 과 같 습 니 다.
"1111
"2222"
3333"
"4444"44
"55"55"55
BAT 파일 코드 를 만 들 수 있 습 니 다.
@echo off
echo ^"1111>temp.txt
echo "2222">>temp.txt
echo 3333^">>temp.txt
echo "4444"44>>temp.txt
echo ^"55"55"55>>temp.txt
rem , ^,
FOR /F "delims=" %%i IN (temp.txt) DO echo %%~i
pause
del temp.txt
실행 후 CMD 의 회 현 은 다음 과 같 습 니 다.#문자열 앞 따옴표 가 삭제 되 었 습 니 다.
#문자열 의 앞 뒤 따옴표 가 모두 삭제 되 었 다.
3333" #문자열 앞 에 따옴표 가 없고 뒤의 따옴표 가 남아 있 습 니 다.
4444"44 #문자열 앞의 따옴표 가 삭제 되 었 고 중간 따옴표 는 유지 되 었 습 니 다.
55"55"55 #문자열 앞의 따옴표 가 삭제 되 었 고 중간 따옴표 는 유지 되 었 습 니 다.
임의의 버튼 을 눌 러 계속 하 세 요..
이전 temp.txt 의 내용 과 비교 해 보면 1,2,5 줄 의 따옴표 가 모두 사 라 졌 습 니 다.이것 이 바로 따옴표~i 를 삭제 하 는 역할 입 니 다!
따옴표 삭제 규칙 은 다음 과 같 습 니 다(BAT 형 보충!)
1.문자열 의 맨 끝 에 따옴표 가 동시에 존재 하면 맨 끝 에 있 는 따옴표 를 삭제 합 니 다.
2.문자열 끝 에 따옴표 가 존재 하지 않 으 면 문자열 의 첫 번 째 따옴표 를 삭제 합 니 다.
3.문자열 중간 에 따옴표 가 존재 하거나 끝 에 만 따옴표 가 존재 하면 삭제 하지 않 습 니 다.
2.%~fI - %I 를 완전히 합 격 된 경로 이름 으로 확장
보기:
코드 를 아무 데 나 보관 하 세 요.제 가 여기 데스크 톱 에 놓 을 게 요.
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~fi
pause
실행 후 다음 내용 이 표 시 됩 니 다:test.bat
test.vbs
비 교 를 통 해 우 리 는 경로 가 없다 는 것 을 쉽게 알 수 있 습 니 다.이것 이 바로'%I 를 완전히 합 격 된 경로 이름 으로 확장 하 는 것'의 역할 입 니 다.즉,%i 변수의 내용 이 파일 이름 이 라면 그 는 이 파일 이 있 는 절대적 인 경 로 를 인쇄 할 것 입 니 다.파일 이름 만 인쇄 하 는 것 이 아니 라 스스로 실험 을 하면 알 수 있 습 니 다!
3.%~dI - %I 만 드라이브 번호 로 확장
보기:
코드 는 다음 과 같 습 니 다.데스크 톱 에 놓 고 실행 하 겠 습 니 다!
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~di
pause
실행 후 CMD 에 다음 과 같이 표 시 됩 니 다.C:
C:
내 데스크 톱 에는 두 개의 파일 이 있 습 니 다.test.bat,test.vbs,%%~di 역할 은 변수%i 의 내용 이 파일 이나 디 렉 터 리 이름 이면 이 파일 을
또는 디 렉 터 리 가 있 는 디스크 기 호 를 인쇄 합 니 다!
4.%~pI - %I 만 한 경로 로 확장
이 용법 은 위 와 마찬가지 로 그 는 파일 이름 을 인쇄 하지 않 고 경로 만 인쇄 한다.
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~pi
pause
저 는 결 과 를 하지 않 겠 습 니 다.여러분 스스로 결 과 를 보 세 요.아래 몇 개 는 모두 이런 용법 입 니 다.코드 가 나 오 면 여러분 스스로 결 과 를 보 세 요!5.%~nI - %I 만 파일 이름 으로 확장
파일 이름 만 인쇄
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~ni
pause
6.%~xI - %I 만 파일 확장자 로 확장파일 만 인쇄 할 확장자
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~xi
pause
7,%~sI - 확장 경 로 는 짧 은 이름 만 포함 되 어 있 습 니 다.절대 짧 은 파일 이름 인쇄
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~si
pause
8,%~aI - %I 파일 속성 으로 확장파일 속성 인쇄
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~ai
pause
9.%~tI - %I 파일 의 날짜/시간 으로 확장파일 생 성 날짜 인쇄
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~ti
pause
10%~zI - %I 파일 크기 로 확장인쇄 파일 의 크기
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~zi
pause
위의 예 에서"delims=="은"delims="로 바 꿀 수 있 습 니 다.즉,구분자 가 필요 하지 않 습 니 다.11.%~$PATH:I-경로 환경 변수 에 열 거 된 디 렉 터 리 를 찾 고%I 를 찾 은 첫 번 째 완전히 합 격 된 이름 으로 확장 합 니 다.환경 변수 이름 이 정의 되 지 않 거나 파일 을 찾 지 못 하면 이 조합 키 는 빈 문자열 로 확 장 됩 니 다.
이것 이 마지막 입 니 다.위 에 있 는 것 과 다 릅 니 다.제 가 따로 말씀 드 리 겠 습 니 다!
그리고 이 코드 들 을 일괄 처리 로 저장 하여 데스크 톱 에 놓 습 니 다.
@echo off
FOR /F "delims=" %%i IN (“notepad.exe”) DO echo %%~$PATH:i
pause
토 네 이도 추가:위의 코드 는 C:\WINDOWS\시스템 32otepad.exe 로 표 시 됩 니 다.PATH 변수 에서 지정 한 경로 에서 notepad.exe 파일 을 검색 하 라 는 뜻 입 니 다.notepad.exe 가 있 으 면 절대 경 로 를 출력 하고 없 으 면 오 류 를 출력 하 라 는 뜻 입 니 다!
자,FOR 의 변 수 는 여기까지 소개 합 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Javascript의 변수 선언 var, const 및 let에 대한 설명Javascript의 변수 선언은 다음과 같습니다. 아래와 같이 여러 개가 있다.(var,const,let) JS를 처음 기억할 때 사람이 쓴 코드는 여러 종류가 나온다 이유를 알 수 없을 것 같아서 가능한 한 이해...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.