У меня есть массив, содержащий все мои имена тегов 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
Я заполняю свои массивы частью а
Затем я использую часть c, чтобы перейти к определенной части в коде.
Однако, когда я использую команду run this, я получаю «Система не может найти указанную метку пакета -% ajump [1]%» (пропустить кавычки)
и если я изменю код перехода на (удалить набор%)
if /I %choice%==a (goto %ajump[%room%]%)
Я получаю "Система не может найти указанную метку партии - номер комнаты" (пропустить кавычки)
ajump [1] читает дха
Часть b касается меня, потому что, когда я устаю просто повторять его, он повторяет то же значение, к которому пытается перейти. однако, когда я использую вызов set | echo / p =, он отображает фактическое содержимое массива.
С помощью этого кода я могу отобразить все содержимое всех массивов в папке 'Arrays'
For /R %file% %%F IN (*.txt) DO (
echo %%%%~nF
for /L %%i in (1,1,10) do call echo %%%%~nF[%%i]%%
echo.
)
Является ли мое утверждение if неверным или это может быть моя метка перехода. Поскольку он повторяет тот же текст, в котором он пытается прыгнуть, я считаю, что проблема заключается в том, как я называю массивы.