Batch file 比较变量子字符串和字符串的困难
我有一个很长的字符串用作地图。大约50个字符(不过我的例子是10个字符)。我还有一个字符串,我想用作表示球员在地图字符串上位置的数字:Batch file 比较变量子字符串和字符串的困难,batch-file,Batch File,我有一个很长的字符串用作地图。大约50个字符(不过我的例子是10个字符)。我还有一个字符串,我想用作表示球员在地图字符串上位置的数字: @ECHO OFF SET map=CGWGWBBBTB SET playerposition=1 因此,如果playerposition为3,我希望从下一行代码接收W: %map:~%playerposition%,1% 似乎我无法检索像那样的播放位置变量。@ECHO OFF SETLOCAL @回音 SET map=cgwgwbbtb 设置播放位置=1
@ECHO OFF
SET map=CGWGWBBBTB
SET playerposition=1
因此,如果playerposition
为3,我希望从下一行代码接收W
:
%map:~%playerposition%,1%
似乎我无法检索像那样的播放位置变量。@ECHO OFF
SETLOCAL
@回音
SET map=cgwgwbbtb
设置播放位置=1
调用集playerposition=%%映射:~%playerposition%,1%
布景
设置播放位置=2
调用集playerposition=%%映射:~%playerposition%,1%
布景
设置播放位置=3
调用集playerposition=%%映射:~%playerposition%,1%
布景
您还可以使用一个子例程:
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
用于将字符串第二个参数的子字符串-from-3rd-parameter-length-4th-parameter-包含到变量名第一个参数中
endlocal&…
处理临时变量,并使用解析技巧将值分配给%1
请注意,使用这种方法还允许例程变得“智能”,例如,允许(更改)省略的第4个参数默认为1
还要注意,在所有这些情况下,字符串中的位置计数从0
开始,而不是从1
开始!地图:~%playerposition%,1代码>启用延迟扩展,或呼叫,尽管问题不同…@Aacini谢谢!这很有帮助!如果这是评论的话,你会投赞成票……好吧,你可以投反对票<代码>;)代码>