我有一个以 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