Reputation: 89
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
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