
Eu tenho uma string de comprimento variável começando com START e terminando com END como delimitadores.
Quero extrair a string entre START
e 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