¿Cómo extraer parte de una cadena entre 2 delimitadores, en un archivo por lotes de Windows?

¿Cómo extraer parte de una cadena entre 2 delimitadores, en un archivo por lotes de Windows?

Tengo una cadena de longitud variable que comienza con INICIO y termina con FINAL como delimitadores.

Quiero extraer la cadena entre STARTy END.
Intenté hacer

SET _result=%String:~6,-4%
ECHO %_result% 

Está eliminando los primeros 5 caracteres pero no los últimos 3 como quiero.

Supongamos que _result=STARTblahblahblahEND
obtengo el resultado comoblahblahblahEND

Lo que quiero es:

blahblahblah

Respuesta1

Podrías usar las opciones de subcadena. ¿Funcionaría algo como lo siguiente?

SET TEXT=STARTblahblahblahEND
SET SUBSTRING=%TEXT:~5,-3%
echo %SUBSTRING%

Respuesta2

Esto debería funcionar a menos que la cadena de destino sea multilínea:

@echo off
setlocal EnableDelayedExpansion
set "str="
set "string=blablablaSTART123ENDblablabla"

set string=!string:START=^

!
set string=!string:END=^

!

FOR /F skip^=1eol^= %%S in ("!string!") do if NOT DEFINED str set "str=%%S"
echo(!str!

¿Como funciona?

^
%= EXPANDS TO NOTHING =%
%= EXPANDS TO NOTHING =%

se expande a un solo LF.

skip^=1eol^=desactivaeol

información relacionada