如何在 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

相關內容