批次腳本中的 Windows awk 風格功能

批次腳本中的 Windows awk 風格功能

我想使用批次腳本從 Windows 伺服器上的測試文件中的一行中提取單字。文行如下;

 CURRENTHEIGHT(9182)     TEMPERATURE(1234) 

我想提取數字 9182 和 1234,我需要它們進行進一步的計算。

如何在批次腳本中執行此操作?

謝謝

答案1

如果使用 Gnu-awk gawk 不是一個選擇,您將需要已經提到的組合for /f,並且findstr其正規表示式功能有限。 for /f 將忽略前導分隔符號並將連續分隔符號僅視為一個。要解析範例行,您需要分隔符號()space。所需的數字是標記24,標記13是可接受的變數名稱。該行的正規表示式可能是"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

相關內容