如何在 Windows 批处理文件中提取两个分隔符之间的字符串部分?

如何在 Windows 批处理文件中提取两个分隔符之间的字符串部分?

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

相关内容