我有一个非常长的字符串用作地图。它大约有50个字符(虽然我的例子有10个)。我还有一个字符串,我想用它来代表地图字符串上玩家的位置:
@ECHO OFF
SET map=CGWGWBBBTB
SET playerposition=1
因此,如果playerposition
为3,我希望从下一行代码中收到W
:
%map:~%playerposition%,1%
似乎我无法像那样检索playereposition
变量。
答案 0 :(得分:1)
@ECHO OFF
SETLOCAL
@ECHO OFF
SET map=CGWGWBBBTB
SET playerposition=1
CALL SET playereposition=%%map:~%playerposition%,1%%
SET play
SET playerposition=2
CALL SET playereposition=%%map:~%playerposition%,1%%
SET play
SET playerposition=3
CALL SET playereposition=%%map:~%playerposition%,1%%
SET play
您还可以使用子程序:
SET playerposition=4
CALL :setsubstr playereposition map %playerposition% 1
SET play
GOTO :EOF
:setsubstr
SETLOCAL ENABLEDELAYEDEXPANSION
SET "return=!%2:~%3,%4!"
endlocal&SET "%1=%return%"
GOTO :EOF
这里,临时变量return
用于将字符串second-parameter的substring-from-3rd-parameter-length-4th-parameter-包含到variable-name first-parameter中。
endlocal&...
处理临时变量并使用解析技巧将值赋给%1
。
请注意,使用此方法还可以使例行程序成为智能"例如,允许(通过更改)省略的第4个参数默认为1。
另外请注意,字符串中的位置计数从0
开始,而不是1
。