web-dev-qa-db-ja.com

コマンドライン引数をWindowsバッチスクリプトに渡す

いくつかのコマンドライン引数を渡す必要があるWindowsバッチスクリプトを作成する必要があります。これらの引数は任意の順序で表示できますが、スクリプトは引数名に基づいて適切に取得する必要があります。例えば。:

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

スクリプトは上記の2つの方法のいずれかで呼び出すことができますが、年齢と性別を適切に取得して変数に割り当てる必要があります。引数は、その前のスイッチ(つまり、-age、-genderなど)で識別できます。

誰かがこれを内部的に識別する例を教えてもらえますか?

10

残念ながら、batchには bash のような組み込みのgetops関数がありません。ただし、独自の貧乏人の変種を実装することはできます。

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

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

8
mrwhale