我想使用批次腳本從 Windows 伺服器上的測試文件中的一行中提取單字。文行如下;
CURRENTHEIGHT(9182) TEMPERATURE(1234)
我想提取數字 9182 和 1234,我需要它們進行進一步的計算。
如何在批次腳本中執行此操作?
謝謝
答案1
如果使用 Gnu-awk gawk 不是一個選擇,您將需要已經提到的組合for /f
,並且findstr
其正規表示式功能有限。 for /f 將忽略前導分隔符號並將連續分隔符號僅視為一個。要解析範例行,您需要分隔符號()
和space
。所需的數字是標記2
和4
,標記1
和3
是可接受的變數名稱。該行的正規表示式可能是"CURRENTHEIGHT([0-9][0-9]*).*TEMPERATURE([0-9][0-9]*)"
我說過的 linmited;-)。第一個用於變數%%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