Как установить значения массива в цикле пакетного файла Windows? - PullRequest
0 голосов
/ 11 октября 2019

Я пытаюсь установить значения в командном файле Windows, он не работает, и я понятия не имею, почему. Вот мой код:

@echo off
setlocal EnableDelayedExpansion

set idx=-1
set STRING_LIST=

for %%v in (string1 string2 string3) do (
    set /A idx+=1
    echo [!idx!] %%v

    set STRING_LIST[!idx!]=%%v
)

:: Why is my list empty here??
echo STRING_LIST= %STRING_LIST%
pause

Любая помощь будет принята с благодарностью ... заранее спасибо!

Ответы [ 2 ]

1 голос
/ 11 октября 2019

Я знаю, что вы решили свою проблему, (вы пытались показать значения ранее неопределенной переменной вместо тех, которые вы использовали после) . Это просто для того, чтобы расширить совет в моем теперь удаленном комментарии относительно отмены определения любых существующих STRING_LIST[… переменных и показа всех вновь определенных в конце, поскольку, как я думаю, вы пытались это сделать.

@For /F "Delims==" %%A In ('Set STRING_LIST[ 2^>NUL')Do @Set "%%A="
@Set "idx=-1"
@For %%A In (string1 string2 string3)Do @(Set /A idx+=1
    Call Echo [%%idx%%] %%A&Call Set "STRING_LIST[%%idx%%]=%%A")
@Set STRING_LIST[ 2>NUL&&Pause||Exit /B
0 голосов
/ 11 октября 2019

Кажется, я только что ответил на свой вопрос. Во-первых, я не должен был устанавливать массив STRING_LIST в начале моего скрипта. Во-вторых, мне нужно было исправить то, как я пытался отобразить значения элементов списка.

Вот последний сценарий, с которым я закончил

@echo off
setlocal EnableDelayedExpansion enableextensions

set idx=-1

echo Populate the list:
for %%v in (string1 string2 string3) do (
    set /A idx+=1
    echo [!idx!] %%v

    set STRING_LIST[!idx!]=%%v
)
echo.

echo Individual list item values:
echo %STRING_LIST[0]%
echo %STRING_LIST[1]%
echo %STRING_LIST[2]%
echo.

echo All list item values:
for /L %%f in (0,1,!idx!) do (echo !STRING_LIST[%%f]!)
echo.

pause
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...