Я пытаюсь использовать пакетные сценарии для динамического создания и назначения переменных на основе разделенного пробелами списка имен компьютеров.
Имена компьютеров присваиваются% hosts% (которые извлекаются из другого файла в производственном скрипте). Я пытаюсь подсчитать количество хостов, которые были загружены (они разделены пробелами), а затем назначить каждому переменную, которая содержит число, относящееся к порядку, в котором перечислены хосты.
Вот фрагмент кода:
@echo off
setlocal EnableDelayedExpansion
SET hosts=10.10.0.0 192.168.0.0 W2K3-Server
SET /a counter=0
FOR %%I IN (%hosts%) DO (
SET /a counter+=1
)
echo Total= !counter!
FOR /L %%A IN (1,1,!counter!) DO (
FOR %%I in (%hosts%) DO (
IF [!host%%A!]==[] SET host%%A=%%I
echo host%%A= !host%%A!
)
)
endlocal
Вывод этого скрипта:
Total= 3
host1= 10.10.0.0
host1= 10.10.0.0
host1= 10.10.0.0
host2= 10.10.0.0
host2= 10.10.0.0
host2= 10.10.0.0
host3= 10.10.0.0
host3= 10.10.0.0
host3= 10.10.0.0
Результаты, которые я хотел бы видеть:
Total= 3
host1= 10.10.0.0
host2= 192.168.0.0
host3= W2K3-Server
Я знаю, почему я получаю первый результат. Там нет проверки, чтобы увидеть, если условие выполнено. В этом случае условием будет установка одного из хостов в качестве переменной. Мне нужно знать, как выйти из раздела «FOR %% I in (% hosts%)» цикла после установки переменной.
Возможно ли это в партии? Эта часть не является критичной для проекта, над которым я работаю, но она добавила бы ценность, открыв некоторые новые возможности в других областях сценария.