Batch file 如何转换变量';在批处理中将s值转换为单独的变量?

Batch file 如何转换变量';在批处理中将s值转换为单独的变量?,batch-file,Batch File,例如: @echo off setlocal enabledelayedexpansion set 101=_ set 102=_ set 103=_ set 104=_ set 105=_ set 106=_ set 107=_ set 108=_ set 109=_ set 110=_ set 111=_ set 112=_ set 113=_ set 114=_ set 115=_ set 116=_ set 201=_ set 202=_ set 203=_ set 204=_ set

例如:

@echo off
setlocal enabledelayedexpansion
set 101=_
set 102=_
set 103=_
set 104=_
set 105=_
set 106=_
set 107=_
set 108=_
set 109=_
set 110=_
set 111=_
set 112=_
set 113=_
set 114=_
set 115=_
set 116=_
set 201=_
set 202=_
set 203=_
set 204=_
set 205=_
set 206=_
set 207=_
set 208=_
set 209=_
set 210=_
set 211=_
set 212=_
set 213=_
set 214=_
set 215=_
set 216=_
echo !101!!102!!103!!204!!205!!206!!207!!208!!209!!210!!211!!212!!213!!214!!215!!216!
echo !201!!202!!203!!204!!205!!206!!207!!208!!209!!210!!211!!212!!213!!214!!215!!216!
我使用这些编号的变量作为坐标来创建地图。真正的地图会更大,这只是一个例子 “Currentlocation”是当前坐标的变量

set currentlocation=204
set 204=O
O=地图上的当前位置。 我想向左移动,因此我将使用以下方法:

set /a "currentlocation=currentlocation-1"
虽然我现在已经将currentlocation变量更改为我想要的数字,但我还需要将新的数字变成变量“203”。 这样我就可以把变量203的内容改成O

如果可能的话,我还想避免使用变量搜索,因为我不想让这个数字影响我将来可能使用的变量


所以基本上203、204和currentlocation本身就是变量。203和204为映射保留ascii,例如=*O。我需要批处理程序识别我已移动到该位置,因此我尝试的是使currentlocation保留我想要的变量的编号。因此,如果currentlocation=203,我希望程序注意到新数字与变量203匹配,并将203变量ascii替换为O(表示我当前在地图上),希望这有助于消除任何混淆。

设置“%currentlocation%=O”
?我也要让坐标在屏幕上回响,所以我需要程序告诉“203”,例如to=O,我不能完全理解;无论如何,要回显
currentlocation
的内容,请使用
调用echo%%currentlocation%%
或者,如果启用,回显
!%当前位置%,如果这是您想要的…1。永远不要使用以数字开头的批处理变量。2.我不明白你为什么要把两个下标合并成一个值。对行和列坐标使用单独的下标要简单得多。3.我强烈建议您使用标准数组表示法:
set-map[1][1]=\u
(C++风格)或
set-map[1,1]=\u
(其他语言风格);这更清楚。然后对行和列坐标使用单个变量:
set currentRow=2
set currentCol=4
set map[%currentRow%,%currentCol%]=O
。我建议您在批处理文件中查看有关数组管理的信息。