3

我有一个要解析的复杂字符串。我有一个简短的子程序来细化两个特定字符的索引,我需要介于两者之间的字符串。所以问题是:如何在另一个变量的字符串操作中使用变量?

这是一些示例代码:

@ECHO off

set start=2
set end=5
set str=Hello World

echo %str:~2,5%
echo %str:~%start%,%end%%

如何让第二个回声显示第一个回声显示的内容?(现在第二个回声只是显示我想要的,它会按原样崩溃)

4

2 回答 2

3
@ECHO off

set start=2
set end=5
set str=Hello World

setlocal enableDelayedExpansion
echo %str:~2,5%
echo !str:~%start%,%end%!
endlocal

或(最坏的方式)

@ECHO off

set start=2
set end=5
set str=Hello World

echo %str:~2,5%
call echo %%str:~%start%,%end%%%

或(如果开始和结束定义以及子字符串都在括号上下文中,则可以使用)

@ECHO off

set start=2
set end=5
set str=Hello World

echo %str:~2,5%
setlocal enableDelayedExpansion
for /f "tokens=1,2" %%a in ("%start% %end%") do echo !str:~%%a,%%b!
endlocal

或(也是一个坏方法)

@ECHO off

set start=2
set end=5
set str=Hello World

call :substr "%str%" %start% %end%
goto :eof

:substr
setlocal enableDelayedExpansion
set "_str=%~1"
echo !_str:~%2,%3!
rem without delayedExpansion
rem call echo %%_str:~%2,%3%%
endlocal
goto :eof
于 2013-10-28T21:00:57.410 回答
0
CALL echo %%str:~%start%,%end%%%

代替您的版本。不需要enabledelayedexpansion

于 2013-10-28T22:33:07.333 回答