Не могу поверить, что это так сложно! Похоже, что все захотят часто разбивать строку, не зная, сколько в ней токенов, и не разбирая ее по строкам. Как правило, кажется, что люди пишут в файл, а затем переходят по нему или используют метод multi sub, как эти другие. Какой беспорядок!
Вот мое решение. За ним легче следовать, и он работает встроенным, то есть без подпрограммы. Приятно составить список имен файлов или чего-либо еще, а затем выполнить их пошагово, не записывая их во временный файл, убедиться, что нет конфликтов при записи файла, удалить временный файл и т. Д. Плюс я не знаю, как вернуть значение из подпрограммы, как будто это была функция - я не думаю, что вы можете. Таким образом, вам придется продолжать писать 2 подпрограммы с другими ответами, которые я вижу здесь каждый раз, когда вы хотите сделать что-то вроде этого - один, который подпитывает другой. Мой метод позволяет легко создавать списки и просматривать их столько раз, сколько вы хотите в течение всего сценария.
setlocal enableextensions enabledelayedexpansion
set SomeList=
set SomeList=!SomeList!a;
set SomeList=!SomeList!b;
set SomeList=!SomeList!c;
set SomeList=!SomeList!d;
set SomeList=!SomeList!e;
set SomeList=!SomeList!f;
set SomeList=!SomeList!g;
set List=!SomeList!
:ProcessList
FOR /f "tokens=1* delims=;" %%a IN ("!List!") DO (
if "%%a" NEQ "" (
echo %%a
)
if "%%b" NEQ "" (
set List=%%b
goto :ProcessList
)
)
Выход:
a
b
c
d
e
f
g
Очевидно, вы можете просто обменяться эхом с чем-то полезным.