批处理文件删除某些短语上方和下方的行

时间:2014-05-08 19:53:08

标签: batch-file

我租用了一个软件,可以将文档保存在文本文件中。

每个问题都被格式化为群集,标签放在方括号中,后跟与该问题相关的值列表,按照单独的行进行,如下所示:

[Q1]
Answer = yes
Source = A
Value = 20

[Q2]
Answer = yes
Source = B
Value = 20

[Q3]
Answer = yes
Source = A
Value = 20

我想要做的是删除Source = B的任何完整文本块,以便上面示例的输出文本文件读为:

[Q1]
Answer = yes
Source = A
Value = 20

[Q3]
Answer = yes
Source = A
Value = 20

基本上省略

[Q2]
Answer = yes
Source = B
Value = 20

可以这样做吗?如果是这样,最好的方法是什么

1 个答案:

答案 0 :(得分:0)

下面的批处理文件是精确地编写的,以解决此问题,因此它将 解决任何其他类似的问题。

@echo off
setlocal EnableDelayedExpansion

set "Source = B"
for /F "delims=" %%a in (input.txt) do (
   set "line=%%a"
   if "!line:~0,1!" equ "[" (
      if "!Source !" neq " B" (
         echo !label!
         for %%v in (Answer Source Value) do echo %%v =!%%v !
         echo/
      )
      set "label=%%a"
   ) else (
      set "%%a"
   )
)
if "!Source !" neq " B" (
   echo !label!
   for %%v in (Answer Source Value) do echo %%v =!%%v !
   echo/
)