배치 스크립트를 사용하여 Windows 서버의 테스트 파일 줄에서 단어를 추출하고 싶습니다. 텍스트 줄은 다음과 같습니다.
CURRENTHEIGHT(9182) TEMPERATURE(1234)
추가 계산에 필요한 숫자 9182와 1234를 추출하고 싶습니다.
배치 스크립트에서 이 작업을 어떻게 수행합니까?
감사해요
답변1
for /f
Gnu-awk gawk를 사용할 수 없는 경우 이미 언급한 기능 과 findstr
제한된 RegEx 기능 의 조합이 필요합니다 . for /f는 선행 구분 기호를 무시하고 연속 구분 기호를 하나만 처리합니다. 샘플 라인을 구문 분석하려면 구분 기호 ()
및 가 필요합니다 space
. 필수 숫자는 토큰 2
및 4
토큰 1
이며 3
허용되는 변수 이름입니다. 해당 라인에 대한 RegEx는 "CURRENTHEIGHT([0-9][0-9]*).*TEMPERATURE([0-9][0-9]*)"
제한적이라고 말할 수 있습니다 ;-). 변수에 사용된 첫 번째 토큰은 %%A
첫 번째 토큰에 해당합니다. %%D
네번째까지. 이 모든 것을 종합하려면:
:: ExtractHeightTemp.cmd ::::::::::::::::::::::::::::::::::::::::::::
@echo off
Set File=C:\Test\test.txt
for /f "tokens=1-4 delims=() " %%A in (
'findstr /i "CURRENTHEIGHT([0-9][0-9]*).*TEMPERATURE([0-9][0-9]*)" "%File%"'
) do Set _%%A=%%B&Set _%%C=%%D
Set _
Pause
배치는 다음과 같은 출력을 생성합니다.
> ExtractHeightTemp.cmd
_CURRENTHEIGHT=9182
_TEMPERATURE=1234