我有一个数组,其中包含我所有的GOTO标签名称。我希望能够使用变量作为数组索引,并使用该变量跳到代码的特定部分。我的代码将提示用户输入内容,并根据用户所处的屏幕(%room%),输入的内容将跳到我代码中的特定点。
我刚开始批量处理,并且我的大部分代码都是从互联网上修改的。在具有该文件的文件夹中,我还有另一个名为“数组”的文件夹。在该文件夹中,我有一堆包含Array元素的文本文件。我的数组是使用这些文本文件填充的,文件名成为数组的名称。
这是我的代码
@Echo Off
set /A room=1
::--part a (populating arrays) ----------------------
set "file=%~dp0Arrays"
For /R %file% %%G IN (*.txt) DO (
set /A i=0
for /F "usebackq delims=" %%a in ("%%G") do (
set /A i+=1
call set %%~nG[%%i%%]=%%a
call set n=%%i%%
)
)
::--part b (populating arrays) ----------------------
echo %%ajump[%room%]%%
:: returns %roomtext[1]%
call echo|set /p=%%ajump[%room%]%%
:: returns dha
echo.
::--part c (jumping to point in code using array)-----
SET /P choice= Type your choice:
if /I %choice%==a (goto %%ajump[%room%]%%)
exit
::--part d (code to jump to) ----------------------
:dha
ehco succsess
pause
exit
我使用a部分填充数组
然后我使用c部分跳转到代码中的特定部分。
但是,当我使用运行时,我得到“系统找不到指定的批处理标签-%ajump [1]%”(省略引号)
如果我将跳转代码更改为(删除一组%)
if /I %choice%==a (goto %ajump[%room%]%)
我收到“系统找不到指定的批次标签-房间”(省略引号)
ajump [1]读取dha
b部分与我有关,因为当我厌倦只是回声它时,它会回显它试图跳转到的相同值。但是,当我使用调用set | echo / p =时,它将回显数组的实际内容。
我可以使用此代码回显“数组”文件夹中所有数组的所有内容
For /R %file% %%F IN (*.txt) DO (
echo %%%%~nF
for /L %%i in (1,1,10) do call echo %%%%~nF[%%i]%%
echo.
)
是我的if语句错误还是它是我的跳转标签?由于它回显与尝试跳转相同的文本,因此我被认为是问题所在。这就是我调用数组的方式。
答案 0 :(得分:0)
我找到了答案。尽管我不知道为什么,但我仍需要在GOTO之前打个电话。