难度将变量子字符串与字符串进行比较

时间:2017-01-15 06:43:02

标签: batch-file

我有一个非常长的字符串用作地图。它大约有50个字符(虽然我的例子有10个)。我还有一个字符串,我想用它来代表地图字符串上玩家的位置:

@ECHO OFF
SET map=CGWGWBBBTB
SET playerposition=1

因此,如果playerposition为3,我希望从下一行代码中收到W

%map:~%playerposition%,1%

似乎我无法像那样检索playereposition变量。

1 个答案:

答案 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