В следующем скрипте я хочу передать строку через переменную и имя переменной для массива, который должен содержать подстроки в подпрограмме.
Подпрограмма помещает подстроки переданной строки в массив / список, которыйзатем должен получить «возвращение», установив его в качестве значения 2. переданного параметра.
@ECHO OFF
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
SET testString=Hello World
REM Pass testString and substrings to subroutine
CALL :get_substrings testString substrings
REM For testing. Echo substrings. DOESN'T WORK. substrings is empty!
FOR /L %%s IN (0,1,2) DO (
ECHO !substrings[%%s]!
)
ENDLOCAL
EXIT /B 0
:get_substrings
SETLOCAL ENABLEDELAYEDEXPANSION
SET "string=!%~1!"
REM Alternative approach: Make a connection to %2 rightaway
REM SET "substrings=!%~2!"
REM Process string: Put substrings into indexed array. This works as expected!
FOR /L %%s IN (0,1,2) DO (
SET substrings[%%s]=!string:~0,5!
SET string=!string:~5!
)
REM For testing. Echo the substrings. Works as expected!
FOR /L %%s IN (0,1,2) DO (
ECHO !substrings[%%s]!
)
REM For alternative approach
REM ENDLOCAL
REM End the local the set 2.param = substringsArray
ENDLOCAL & SET %2=%substrings%
EXIT /B 0
Обработка строки путем создания массива с подстроками в подпрограмме работает, как и ожидалось.Но установка значения параметров 2. и сохранение значения после подпрограммы не работает ...
Примечания: Обработка строки - просто пустышка.Реальный процесс немного отличается, но ядро с массивом подстрок одинаково.Сценарий исполняется сразу.
Итак, как мне вернуть подстроки значений?