如何使用Windows批处理脚本搜索字符串并从文本文件中提取另一个字符串模式

时间:2014-12-07 18:41:09

标签: windows batch-file scripting

考虑 out.txt 文件的格式如下:

Display Variable;

    ID    NAME       value
===*==========*================
201  Variavle     07Dec2014

Display Variable12;

ID    NAME          value
===*==========*================
201  Variavle12     08Dec2014

Display Variable123;

ID    NAME       value
===*==========*================
201  Variavle123     09Dec2014    

在批处理文件中,我们需要搜索变量变量12 变量123 并返回值将文件批处理到环境变量,其名称来自 NAME 列,如

SET Variavle=09Dec2014
SET Variavle12=08Dec2014
SET Variavle123=09Dec2014

请帮我完成。

3 个答案:

答案 0 :(得分:1)

@echo off

for /f "tokens=2,3 delims= " %%A in ('FINDSTR /i /r  /c:"Variavle.* " out.txt') do (
    set "%%A=%%B"
)

set Variavle

答案 1 :(得分:0)

以下代码帮助我找到答案

SET Variavle=09Dec2014

SET Variavle12 = 08Dec2014 SET Variavle123 = 09Dec2014

@echo off   
for /f "tokens=* " %%A in ('FINDSTR /i /r  /c:"Variable     " D:\test.txt') do (    
SET _test=%%A
SET Variable=%_test:~20,5%
ECHO %Variable%
)    

... ...

如果有任何变化,请告诉我!

Thanx寻求帮助。

答案 2 :(得分:0)

@npocmaka

"dev.bat"

@echo off
for / f" tokens = *" %% A in(' FINDSTR / i / r / c:" nBegin_fcst_dt" D:\ test.txt')do(
    SET _test = Variavle 20142     SET nBegin_fcst_dt =%_ test:~13,5%     ECHO:%nBegin_fcst_dt%     ) " d:\ test.txt的"     ID NAME值 === ========== =====     201 Variavle 20142

我刚刚运行了上面的脚本,例如" test.bat"

我得到了一些奇怪的输出。

预期产出 20142

当我运行脚本时,我第三次获得实际输出

First time: Nothing

第二次:~13,5 第三次:20142

d产品:> dev.bat

d产品:> dev.bat 〜13.5 d产品:> dev.bat 20142