Como extrair parte de uma string entre 2 delimitadores, no arquivo em lote do Windows?

Como extrair parte de uma string entre 2 delimitadores, no arquivo em lote do Windows?

Eu tenho uma string de comprimento variável começando com START e terminando com END como delimitadores.

Quero extrair a string entre STARTe END.
Eu tentei fazer

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

Está removendo os primeiros 5 caracteres, mas não os últimos 3 caracteres como eu quero.

Suponha que _result=STARTblahblahblahEND
estou obtendo a saída comoblahblahblahEND

O que eu quero é:

blahblahblah

Responder1

Você poderia usar as opções de substring. Algo como o abaixo funcionaria?

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

Responder2

Isso deve funcionar, a menos que a string de destino seja multilinha:

@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 =%

expande para um único arquivo LF.

skip^=1eol^=desabilitaeol

informação relacionada