문제

I rent a piece of software which saves docs in a textfile.

Each question is formatted into clusters, with a label in square brackets, followed by a list of values associated to that question, following on separate lines, as per excerpt below:

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

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

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

What I would like to do is strip out any complete blocks of text where Source = B, so that the outputted text file of the example above would read as:

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

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

Basically omitting

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

Can this be done? if so, what is the best method

도움이 되었습니까?

해결책

The Batch file below was written precisely to solve this problem as it is stated, so it will not solve any other similar problem.

@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/
)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top