Windows バッチ ファイルで、2 つの区切り文字の間にある文字列の一部を抽出するにはどうすればよいでしょうか?

Windows バッチ ファイルで、2 つの区切り文字の間にある文字列の一部を抽出するにはどうすればよいでしょうか?

区切り文字として 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

関連情報