
У меня есть строка переменной длины, начинающаяся с 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