본문 바로가기

BAT/Reference

[BAT] 특정 문자를 기준으로 파싱하기

반응형
:: 첫번째 '_'를 기준으로 앞 부분은 'site' 변수에 뒷 부분은 'environment' 변수에 초기화
for /f "tokens=1* delims=_" %%i in ("%siteCode%") do (
    set site=%%i
    set environment=%%j
)

 

일단 내가 이해한 정도가 정확하지 않아 설명이 틀릴수도 있음.

  • tokens=1*
    • 몇 개를 나눌지를 결정. 앞에 숫자는 체크할 갯수 뒤에 '*'은 문자열 맨 마지막도 포함할지 여부.
    • 정확히 맞는지는 모르겠고 검색하면 자세한 내용이 설명된 페이지를 쉽게 찾을 수 있으니 검색을 해보길 바람.
    • 아래는 예시.
      • 'AB_CD_EF'를 '1*'로 하면 'AB'와 'CD_EF'로 나뉘어 짐.
      • 'AB_CD_EF'를 '1'로 하면 'AB'만 나뉘어지고 뒷 부분은 버려짐.
      • 'AB_CD_EF'를 '2*'로 하면 'AB'와 'CD'와 'EF'로 나뉘어 짐.
      • 'AB_CD_EF'를 '2'로 하면 'AB'와 'CD'로 나뉘어지고 뒷 부분은 버려짐.
  • delims=_
    • 나눌 구분자를 어떤 것으로 할지 결정.
    • 'AB_CDEF'에서 '_'를 기준으로 파싱하려면 '_'를 'AB+CDEF'에서 '+'를 기준으로 파싱하려면 'delims=+'가 되어야 함.
  • ("%siteCode%")
    • 반복 조건.
    • 파일 경로 문자열 또는 반복 조건이 오면 됨.
      • 예를 들어 '(1,1,100)'이라고 작성하면 1부터 100까지 1씩 증가하며 반복.

마지막 부분은 tokens와 delims에 의해 나눠지는 갯수에 맞춰 설정.

반응형

'BAT > Reference' 카테고리의 다른 글

[BAT] ini 파일 읽기  (0) 2024.12.09