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