![]() |
Как организовать вызов bat с большим количеством переменных и их обработку?
Как организовать вызов bat с большим количеством переменных и их обработку?
Есть батник, который устанавливает несколько программ (больше 10). Установка каждой программы идет отдельным участком кода. Хочется, чтобы его можно было вызывать с параметрами в виде списка программ, которые нужно установить (в списке переменных может быть количество устанавливаемых программ, если это облегчит дело). Что-то вроде этого: ::разбор переменных if (среди переменных есть программа1) (устанвливать1=true) if (среди переменных есть программа2) (устанвливать2=true) ... ::установка if (устанвливать1=true) (код установки первой программы) ... Читал про команду shift, но то, что у меня придумывается, получается очень громоздким, да еще и для каждой программы разбор дублируется... После написания предыдущего предложения, возникла мысль, которая оказалась рабочей: Код:
:startinstall · Хочется, чтобы при вызове без параметров устанавливались все программы, а лучше даже не все, а определенный набор. · Хочется, чтобы программы устанавливались в том порядке, в котором они прописаны в батнике. · Как сделать, чтобы все работало, если один или несколько параметров не имеют метки в батнике (неверные параметры вызова) Эти требования опять приводят к схеме, которую я привел выше. Можно ли это осуществить, не перегружая батник большим количеством кода? |
seriych,
примерно так (но с редакцией под себя): Код:
Echo on&Chcp 866&Title S E T U P &cls Инсталяторы находяться в той dir-ии, что *.bat или же меняй пути все setup'ы запускаются по очереди (или исключи /wait ) program-XXX - имя программы (например install_flash_player.exe) LingID - идентификатор инсталятора, придумай сам (это должна быть часть имени проги). /a /b /c - ключи запуска Ошибки пишутся в файл "Errlog" Запуск из CMD или WinRun, пример: Код:
"Disk:\dir1\dir2\@setup.bat" "LingID LingID LingID" |
deepred,
ээээ... Я несколько озадачен :) А вот это start /b /wait "%~dp0%%a" подразумевает, что у меня запускается установщик приложения? Тогда мне это не подходит, потому что для каждой программы у меня помимо запуска инсталлятора еще и различные действия совершаются (где-то ярлыки переименовать, где-то настройки скопировать). P.S. Делать отдельный батник для каждой программы не предлагать, тем более что они и так есть. Хочется как раз убрать эти батники. |
seriych,
Включаем фантазию!!!!!!!!!!!!!!!! "/a /b /c", а что тебе мешает включить сценарий в эту подстроку? допустим: setup_programm_name.exe$ /silient$copy xxx\settings.ini yyy\yyy\ & ren xxx\name1.lnk name2.lnk и получится start /b /wait xxx\setup_programm_name.exe /silient copy xxx\settings.ini yyy\yyy\ & ren xxx\name1.lnk name2.lnk |
deepred,
Вот фантазии-то и не хватает, видимо :) Для каждой программы этот дополнительный код сильно различается. Или я чего-то не понимаю в твоем коде... |
Так подойдет?
Код:
@echo off |
Ладно, спасибо. С утра может мозг лучше будет соображать.
|
до кучи
Код:
@echo off Код:
start.cmd 99 01 |
Всем спасибо.
Скрипт deepred я так и не понял :( Вариант gora самый простой для понимания. Правда ставит в порядке, в котором идут аргументы, а не в заранее определенном, но это не принципиально, да и с другой стороны так даже правильнее (более гибко получается). Вариант amel27 пока не смотрел, ибо предыдущий устроил. Плюсик за содействие. |
Цитата:
Код:
For %%a In (%Exilist%) Do For %%i In (%list%) Do If %%a==%%i echo Call :M%%a |
gora,
логично :) P.S. упс, забыл пометить решенной |
у меня есть вопрос; я ни разбираюсь в батниках но хочю написать бат который автоматически устонавливает програму))
ну вот он откривает установщик но не знаю как сделать чтоб он как бы сам нажимал кнопку "далее" и чтоб сам ставил галочку на соглашении лицензии???спс заранее!))) :Beer: :clapping: |
Цитата:
Цитата:
|
спс большое там я многое узнал))) конечно же есть проблемы но слава Богу что есть такая вещь как "ФОРУМ"!!! :Beer:
|
Время: 16:51. |
Время: 16:51.
© OSzone.net 2001-