搜索字符串并使用批处理脚本将另一个文件中的下几行作为输出文件

时间:2016-07-26 18:14:36

标签: batch-file

我有批处理脚本,它执行命令并获取* .log文件中的输出。

现在我需要搜索严重性值,该值可以是以下任何一种,即

Caution
Critical
Repaired

如果在日志文件中找到了上述值,那么需要在单独的输出文件中以下面的格式从该严重性部分的下一行开始下一步。

日志文件内容:

    number=1
    severity=Informational
    date=12/01/2012
    time=07:56
    description=Maintenance note: sys log cleared through tool

    number=4
    severity=Critical
    date=05/13/2013
    time=18:03
    description=Network Adapter Link Down (Slot 0, Port 1)

在final_outputfile中:

severity     date          time    Description
Critical     05/13/2016    18:03   Network Adapter Link Down (Slot 0, Port 0)
Repaired     06/21/2016    05:39   Network Adapter Link Down (Slot 0, Port 0)

到目前为止,我只能创建单独的final_output文件,但获取一些初始日志文件名作为内容。

我甚至只需要获取那些日期文件行,该日期文件行的日期早于当前日期的一个月/ 2个月。那将是下一个挑战。

1 个答案:

答案 0 :(得分:0)

我想,这是输入文件中的空格。如果没有,请相应调整代码。

@echo off
setlocal
>out.log echo severity  date        time    Description
REM above there are a tabs (two of them between date and time)
set "wanted=Caution Critical Repaired"
(
  for /f "tokens=1,2 delims==" %%a in ('type in.log^|findstr "severity= date= time= description="') do (
    if "%%a"=="    severity" echo\ 
    REM this is four SPACES above before severity
    <nul set /p "=%%b   "
    REM above there is a SPACE and a TAB after %%b 
  )
  echo/
)  >>out.log
type out.log |findstr /b "severity %wanted%"