
Tengo una cadena de longitud variable que comienza con INICIO y termina con FINAL como delimitadores.
Quiero extraer la cadena entre START
y 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