Я пытаюсь перебрать список в пакетном файле Windows, используя разные числа в разных списках в качестве параметров на каждой итерации.
set input_image_list=(1 2 3 4 5 6 7 8 9 )
set output_image_list = (2 3 4 5 6 7 8 9 10)
set next_needed_image = (002 003 004 005 006 007 008 009 010)
FOR %%A IN (2 3 4 5 6 7 8 9 10) DO python batchLayer4ThirdVideo.py --input_image !input_image_list[%%A]! --next_undreamed_image !next_needed_image[%%A]! --output_image %%A
но индексирование списков, когда я использую их как параметры, не работает, оно просто помещает индекс, например input_image_list[2]
качестве моего параметра, когда он должен быть просто числом.
Как я могу правильно индексировать список, чтобы каждый номер внутри него передавался как параметр?
Существует метод (каким-то образом извращения) для расширения строковых списков в массивах путем замены пробелов (или любого другого символа) между элементами списка с помощью счетчика и набора для формирования массива.
Из ваших списков и для неясно, хотите ли вы индекс 0 или 1.
(проще было бы for/l %%A in (2,1,10) Do...
)
Для лучшего понимания я использовал более короткие имена переменных и отменил команду split pedon на несколько строк.
:: Q:\Test\2018\07\05\SO_51191502.cmd
@Echo off & SetLocal EnableDelayedExpansion
set i=0&Set "ImgIn= 1 2 3 4 5 6 7 8 9 10"
Set "ImgIn=%ImgIn: ="&Set /a i+=1&Set "ImgIn[!i!]=%"
:: Set ImgIn
set i=0&Set "ImgOut= 2 3 4 5 6 7 8 9 10 11"
Set "ImgOut=%ImgOut: ="&Set /a i+=1&Set "ImgOut[!i!]=%"
:: Set ImgOut
set i=0&Set "ImgNext= 002 003 004 005 006 007 008 009 010 011"
Set "ImgNext=%ImgNext: ="&Set /a i+=1&Set "ImgNext[!i!]=%"
:: Set ImgNext
For /L %%A IN (1,1,10) DO (
Echo python batchLayer4ThirdVideo.py ^
--input_image !ImgIn[%%A]! ^
--next_undreamed_image !ImgNext[%%A]! ^
--output_image !ImgOut[%%A]!
)
Пример вывода:
> Q:\Test\2018\07\05\SO_51191502.cmd
python batchLayer4ThirdVideo.py --input_image 1 --next_undreamed_image 002 --output_image 2
python batchLayer4ThirdVideo.py --input_image 2 --next_undreamed_image 003 --output_image 3
python batchLayer4ThirdVideo.py --input_image 3 --next_undreamed_image 004 --output_image 4
python batchLayer4ThirdVideo.py --input_image 4 --next_undreamed_image 005 --output_image 5
python batchLayer4ThirdVideo.py --input_image 5 --next_undreamed_image 006 --output_image 6
python batchLayer4ThirdVideo.py --input_image 6 --next_undreamed_image 007 --output_image 7
python batchLayer4ThirdVideo.py --input_image 7 --next_undreamed_image 008 --output_image 8
python batchLayer4ThirdVideo.py --input_image 8 --next_undreamed_image 009 --output_image 9
python batchLayer4ThirdVideo.py --input_image 9 --next_undreamed_image 010 --output_image 10
python batchLayer4ThirdVideo.py --input_image 10 --next_undreamed_image 011 --output_image 11
;)
%input_image_list%
в строковое значение(1 2 3 4 5 6 7 8 9 )
, переменную с именем%output_image_list<space>%
в строковое значение<space>(2 3 4 5 6 7 8 9 10)
и переменную с именем%next_needed_image<space>%
в виде строкового значения<space>(002 003 004 005 006 007 008 009 010)
.