Как извлечь часть строки между двумя разделителями в пакетном файле Windows?

Как извлечь часть строки между двумя разделителями в пакетном файле Windows?

У меня есть строка переменной длины, начинающаяся с START и заканчивающаяся END в качестве разделителей.

Я хочу извлечь строку между STARTи END.
Я пробовал делать

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

Он удаляет первые 5 символов, а не последние 3 символа, как мне хотелось бы.

Предположим, _result=STARTblahblahblahEND
я получаю вывод какblahblahblahEND

Я хочу:

blahblahblah

решение1

Вы могли бы использовать параметры подстроки. Будет ли работать что-то вроде нижеприведенного?

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

решение2

Это должно сработать, если только целевая строка не является многострочной:

@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!

Как это работает?

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

расширяется до одного LF.

skip^=1eol^=отключаетeol

Связанный контент