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