10

Мне нужно создать пакетный скрипт Windows, где мне нужно передать несколько аргументов командной строки. Эти аргументы могут появляться в любом порядке, но сценарий должен правильно их подбирать на основе имени аргумента. Например:

<scriptname> -age <agevalue> -gender <gender>
<scriptname> -gender <gender> -age <agevalue>

Сценарий может быть вызван любым из двух вышеуказанных способов, но возраст и пол следует правильно подобрать и присвоить переменным. Аргументы могут быть идентифицированы переключателем перед ними - т.е. -age, -gender и т.д.

Может кто-нибудь дать мне пример идентификации этого внутри?

2 ответа2

10

batch, к сожалению, не имеет встроенной функции getops как . Тем не менее, вы могли бы реализовать свой вариант для бедняков:

:GETOPTS
 if /I %~1 == --age set AGE=%2& shift
 if /I %~1 == --gender set GENDER=%2& shift
 shift
if not (%1)==() goto GETOPTS
8

Можете ли вы сделать это с помощью Powershell? или это должно быть партия? Powershell делает это легко и просто, вам просто нужно добавить что-то вроде этого в начало вашего скрипта, а затем вы можете вызывать каждый параметр в любом порядке

param (
[string]$Age,
[string]$Gender
)

Вы можете сделать это с помощью пакета, но это потребует много проверки параметров. Вот несколько ссылок на некоторые пакетные скрипты, которые делают это

http://www.ericphelps.com/batch/samples/arguments.bat.txt

(Возможно дублирование)

https://stackoverflow.com/questions/5215729/is-there-a-way-to-pass-parameters-by-name-and-not-by-order-to-a-batch-bat-f

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .