Wie extrahiert man in einer Windows-Batchdatei einen Teil einer Zeichenfolge zwischen zwei Trennzeichen?

Wie extrahiert man in einer Windows-Batchdatei einen Teil einer Zeichenfolge zwischen zwei Trennzeichen?

Ich habe eine Zeichenfolge variabler Länge, die mit START beginnt und mit END als Trennzeichen endet.

Ich möchte die Zeichenfolge zwischen STARTund extrahieren END.
Ich habe versucht,

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

Es werden die ersten 5 Zeichen entfernt, aber nicht die letzten 3 Zeichen, wie ich möchte.

Angenommen, _result=STARTblahblahblahEND
ich erhalte die Ausgabe alsblahblahblahEND

Was ich will ist:

blahblahblah

Antwort1

Sie könnten die Teilzeichenfolgenoptionen verwenden. Würde etwas wie das Folgende funktionieren?

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

Antwort2

Dies sollte funktionieren, sofern die Zielzeichenfolge nicht mehrzeilig ist:

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

Wie funktioniert es?

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

wird zu einem einzelnen erweitert LF.

skip^=1eol^=deaktivierteol

verwandte Informationen