Andy
Andy

Reputation: 89

Batch - Extracting text from file using delimiters

I need to extract text from file between 2 delimiters and copy it to TXT file. This text looks like XML code, instead delimiters <string> text... </string>, I have :::SOURCE text .... ::::SOURCE. As you see in first delimiter are 3x of ':' and in second are 4x of ':'

Most import is that there are multiple lines between these 2 delimiters.

Example of text:

texttexttexttexttexttexttexttexttext
texttexttexttext
:::SOURCE
just this text
just this text
just this text
just this text
...
just this text
::::SOURCE texttext
texttexttext

Desired output:

just this text
just this text
just this text
just this text
...
just this text

Upvotes: 0

Views: 446

Answers (1)

SomeDude
SomeDude

Reputation: 14228

Try this:

@echo off
setlocal enabledelayedexpansion
if exist srcoutput.txt ( break > srcoutput.txt )
set found=
set markpoint=false
set /a count=0
set /a two=2
for /f "tokens=* delims= " %%a in (source.txt) do (
   if !count! equ %two% goto :EOF
   echo %%a | findstr /c:":SOURCE" >nul 
   if errorlevel 1 ( 
           set found=false
           if "!markpoint!"=="true" (
            echo %%a >> srcoutput.txt
           )
          ) else ( 
              set found=true
            )

   if "!found!"=="true" (
      set /a count=count+1
      set /a division=!count!%%%two%
      if !division! equ 0 (
         set markpoint=false
      ) else (
         set markpoint=true
        )
   )

)
:EOF

For input file source.txt which contains :

texttexttexttexttexttexttexttexttext
texttexttexttext
:::SOURCE
just this text
just this text
just this text
just this text
...
just this text
::::SOURCE texttext
:::SOURCE
just this text
just this text
just this text
just this text
...
just this text
::::SOURCE texttext
texttexttext
:::SOURCE
just this text
just this text
just this text
just this text
...
just this text
::::SOURCE texttext

The output in srcoutput.txt looks like:

just this text 
just this text 
just this text 
just this text 
... 
just this text 

Upvotes: 1

Related Questions