
Ich habe eine Zeichenfolge variabler Länge, die mit START beginnt und mit END als Trennzeichen endet.
Ich möchte die Zeichenfolge zwischen START
und 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