我想使用批处理脚本从 Windows 服务器上的测试文件中的一行中提取一个单词。文本行如下;
CURRENTHEIGHT(9182) TEMPERATURE(1234)
我想提取数字 9182 和 1234,以便进行进一步的计算。
如何在批处理脚本中执行此操作?
谢谢
答案1
如果无法使用 Gnu-awk,则 gawk 需要结合使用前面提到的for /f
和findstr
,这具有有限的 RegEx 功能。 for /f 将忽略前导分隔符并将连续分隔符视为一个。要解析示例行,您需要分隔符()
和space
。所需的数字是标记2
和4
,标记1
和3
是可接受的变量名。该行的 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