반응형
for문 문자열 추출 (tokens, delims)
원하는 상황
test.log 파일의 내용은 아래와 같음
<virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" />
<virtualDirectory path="/" physicalPath="C:\test" />
|
여기서
"%SystemDrive%\inetpub\wwwroot"
"C:\test"
문자열을 추출하는 것이 목표임.
[token 문법]
FOR 구문은 각 행별로 분석하는데
이때 token은 각 행의 몇 번째 문자열을 전달해줄지 지정함.
문자열의 기본 구분단위는 공백임.
for /f "tokens=3" %%a in ('type test.log') DO(
echo %%a
)
|
[예제]
tokens 설정을 1로 하는 경우 결과 = <virtualDirectory
tokens 설정을 2로 하는 경우 결과 = path="/"
tokens 설정을 3으로 하는 경우 결과 = physicalPath="C:\test"
tokens 설정을 3으로 하는 경우 결과 = />
tokens 설정을 *로 하는 경우 결과 = <virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" />
와 같이 tokens의 의미는 공백을 기준으로 문자열을 나눔.
[delims문법]
token이 공백으로 구분했다면
delims는 지정한 구분 문자로 구분함
모든 문자를 구분 기호로 사용할 수 있고 대소문자를 구분함.
구분 기호를 지정하지 않으면 기본적으로 "delims=<tab><space>"로 설정됨.
일반적으로 tokens 설정과 같이 사용됨.
delims 기준으로 분할된 문자열 중 tokens에 해당하는 문자열을 리턴함
for /f "tokens=3 delims='='" %%a in ('type test.log') DO(
echo %%a
)
|
[예제]
(tokens 설정: 3 delims 설정: '=')
for /f "tokens=3 delims='='" %%a in ('type test.log') DO(
echo %%a
)
|
(결과)
"%SystemDrive%\inetpub\wwwroot" />
(이유)
test.log 파일의 내용은 아래와 같은데
<virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" />
<virtualDirectory path="/" physicalPath="C:\test" />
|
delims를 통해 '='으로 구분하면
1 = <virtualDirectory path
2 = "/" physicalPath
3 = "%SystemDrive%\inetpub\wwwroot" />
으로 구분됨.
이 중 tokens=3 으로 설정되어 3번째 항목을 출력하니
"%SystemDrive%\inetpub\wwwroot" /> 가 출력됨
2번째 line은 "C:\test" /> 가 출력됨.
[예제]
(tokens 설정: 4 delims 설정: '=/')
for /f "tokens=4 delims='=/'" %%a in ('type test.log') DO(
echo %%a
)
|
(결과)
"%SystemDrive%\inetpub\wwwroot"
(이유)
test.log 파일의 내용은 아래와 같은데
<virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" />
<virtualDirectory path="/" physicalPath="C:\test" />
|
delims는 여러 문자를 설정 할 수 있음
delims통해 '='과 '/'로 구분하면
1 = <virtualDirectory path
2 = "
3 = " physicalPath
4 ="%SystemDrive%\inetpub\wwwroot" - 끝에 띄어쓰기 있음
5 =>
으로 구분됨.
이 중 tokens=4 으로 설정되어 3번째 항목을 출력하니
"%SystemDrive%\inetpub\wwwroot" 가 출력됨
2번째 line은 "C:\test" 가 출력됨.
[tokens와 delims를 함께 사용해서 결과 도출]
(tokens 설정: 4 delims 설정: '=/')
for /f "tokens=4 delims='=/'" %%a in ('type test.log') DO(
echo %%a
)
|
(결과)
"%SystemDrive%\inetpub\wwwroot"
반응형
'OS > Windows' 카테고리의 다른 글
batch script - 특정 경로 폴더의 하위 목록 확인 (0) | 2022.04.07 |
---|---|
batch script - FOR문 내부에서 SET 처리 하는 방법 (0) | 2022.04.07 |
batch script - START와 CALL의 차이점 (0) | 2022.04.07 |
batch script - 환경변수 문자열 안의 환경변수가 있는 경우 처리하는 방법 (0) | 2022.04.07 |
batch-script Registry value 값 확인 결과 변수에 저장하는 방법 (0) | 2022.04.07 |