如何在另一个变量中使用变量

时间:2015-04-11 14:28:34

标签: batch-file

在这种情况下,如何使用变量%number%

Set Test=%strToMeasure:~-%Number%%

每当我使用变量时,结果都是这样的:

无变量只有数字:

Set Test=%strToMeasure:~-3%

enter image description here

使用变量:

Set Test=%strToMeasure:~-%Number%%

enter image description here

完整代码

@echo off

Set "strToMeasure=This is a string"
call :strLen strToMeasure strlen
echo.String is %strlen% characters long
Set /A number = %strlen% - 13

Set Test=%strToMeasure:~-%Number%%

Echo %strToMeasure%
Echo %Test%

pause


exit /b

:strLen
setlocal enabledelayedexpansion
:strLen_Loop
  if not "!%1:~%len%!"=="" set /A len+=1 & goto :strLen_Loop
(endlocal & set %2=%len%)
goto :eof

1 个答案:

答案 0 :(得分:1)

为了正确执行此行,您有两个选择:

Set Test=%strToMeasure:~-%Number%%

1-加倍第二次扩展的百分号并使用call命令:

Call Set Test=%%strToMeasure:~-%Number%%%

2-使用延迟扩展并将第二个扩展封闭在感叹号中:

setlocal EnableDelayedExpansion

. . .

Set Test=!strToMeasure:~-%Number%!

第二种方法是解决此问题的常用方法,它运行速度比前者快。您可以在this post查看有关此行为的更多详细信息。