批处理脚本中的 Windows awk 样式功能

批处理脚本中的 Windows awk 样式功能

我想使用批处理脚本从 Windows 服务器上的测试文件中的一行中提取一个单词。文本行如下;

 CURRENTHEIGHT(9182)     TEMPERATURE(1234) 

我想提取数字 9182 和 1234,以便进行进一步的计算。

如何在批处理脚本中执行此操作?

谢谢

答案1

如果无法使用 Gnu-awk,则 gawk 需要结合使用前面提到的for /ffindstr,这具有有限的 RegEx 功能。 for /f 将忽略前导分隔符并将连续分隔符视为一个。要解析示例行,您需要分隔符()space。所需的数字是标记24,标记13是可接受的变量名。该行的 RegEx 可以是"CURRENTHEIGHT([0-9][0-9]*).*TEMPERATURE([0-9][0-9]*)" I DID say 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

相关内容