seriych
03-07-2010, 18:36
Как организовать вызов bat с большим количеством переменных и их обработку?
Есть батник, который устанавливает несколько программ (больше 10). Установка каждой программы идет отдельным участком кода. Хочется, чтобы его можно было вызывать с параметрами в виде списка программ, которые нужно установить (в списке переменных может быть количество устанавливаемых программ, если это облегчит дело).
Что-то вроде этого:
::разбор переменных
if (среди переменных есть программа1) (устанвливать1=true)
if (среди переменных есть программа2) (устанвливать2=true)
...
::установка
if (устанвливать1=true) (код установки первой программы)
...
Читал про команду shift, но то, что у меня придумывается, получается очень громоздким, да еще и для каждой программы разбор дублируется...
После написания предыдущего предложения, возникла мысль, которая оказалась рабочей:
:startinstall
shift
if "%0"=="" (goto finishinstall) else (goto %0)
:program1
::устанавливаем программу program1
goto startinstall
:program2
::устанавливаем программу program2
goto startinstall
:: И так далее для остальных программ
:finishinstall
Работает, но:
· Хочется, чтобы при вызове без параметров устанавливались все программы, а лучше даже не все, а определенный набор.
· Хочется, чтобы программы устанавливались в том порядке, в котором они прописаны в батнике.
· Как сделать, чтобы все работало, если один или несколько параметров не имеют метки в батнике (неверные параметры вызова)
Эти требования опять приводят к схеме, которую я привел выше. Можно ли это осуществить, не перегружая батник большим количеством кода?
Есть батник, который устанавливает несколько программ (больше 10). Установка каждой программы идет отдельным участком кода. Хочется, чтобы его можно было вызывать с параметрами в виде списка программ, которые нужно установить (в списке переменных может быть количество устанавливаемых программ, если это облегчит дело).
Что-то вроде этого:
::разбор переменных
if (среди переменных есть программа1) (устанвливать1=true)
if (среди переменных есть программа2) (устанвливать2=true)
...
::установка
if (устанвливать1=true) (код установки первой программы)
...
Читал про команду shift, но то, что у меня придумывается, получается очень громоздким, да еще и для каждой программы разбор дублируется...
После написания предыдущего предложения, возникла мысль, которая оказалась рабочей:
:startinstall
shift
if "%0"=="" (goto finishinstall) else (goto %0)
:program1
::устанавливаем программу program1
goto startinstall
:program2
::устанавливаем программу program2
goto startinstall
:: И так далее для остальных программ
:finishinstall
Работает, но:
· Хочется, чтобы при вызове без параметров устанавливались все программы, а лучше даже не все, а определенный набор.
· Хочется, чтобы программы устанавливались в том порядке, в котором они прописаны в батнике.
· Как сделать, чтобы все работало, если один или несколько параметров не имеют метки в батнике (неверные параметры вызова)
Эти требования опять приводят к схеме, которую я привел выше. Можно ли это осуществить, не перегружая батник большим количеством кода?