在这种情况下,如何使用变量%number%?
Set Test=%strToMeasure:~-%Number%%
每当我使用变量时,结果都是这样的:
无变量只有数字:
Set Test=%strToMeasure:~-3%
使用变量:
Set Test=%strToMeasure:~-%Number%%
完整代码
@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
答案 0 :(得分:1)
为了正确执行此行,您有两个选择:
Set Test=%strToMeasure:~-%Number%%
1-加倍第二次扩展的百分号并使用call
命令:
Call Set Test=%%strToMeasure:~-%Number%%%
2-使用延迟扩展并将第二个扩展封闭在感叹号中:
setlocal EnableDelayedExpansion
. . .
Set Test=!strToMeasure:~-%Number%!
第二种方法是解决此问题的常用方法,它运行速度比前者快。您可以在this post查看有关此行为的更多详细信息。