我有一个要解析的复杂字符串。我有一个简短的子程序来细化两个特定字符的索引,我需要介于两者之间的字符串。所以问题是:如何在另一个变量的字符串操作中使用变量?
这是一些示例代码:
@ECHO off
set start=2
set end=5
set str=Hello World
echo %str:~2,5%
echo %str:~%start%,%end%%
如何让第二个回声显示第一个回声显示的内容?(现在第二个回声只是显示我想要的,它会按原样崩溃)
我有一个要解析的复杂字符串。我有一个简短的子程序来细化两个特定字符的索引,我需要介于两者之间的字符串。所以问题是:如何在另一个变量的字符串操作中使用变量?
这是一些示例代码:
@ECHO off
set start=2
set end=5
set str=Hello World
echo %str:~2,5%
echo %str:~%start%,%end%%
如何让第二个回声显示第一个回声显示的内容?(现在第二个回声只是显示我想要的,它会按原样崩溃)
@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
CALL echo %%str:~%start%,%end%%%
代替您的版本。不需要enabledelayedexpansion