1. ホーム
  2. batch-file

[解決済み] Windows Bat ファイルのオプション引数の解析

2023-04-08 14:32:23

質問

bat ファイルに、複数のオプションの名前付き引数を指定したい。

mycmd.bat man1 man2 -username alice -otheroption

例えば、私のコマンドは2つの必須パラメータと、引数値がaliceである2つのオプションパラメータ(-username)、および-otheroptionを持っています。

これらの値を変数に取り込むことができればと思います。

すでにこれを解決した人に呼びかけを行うだけです。 これらの bat ファイルは苦痛です。

どのように解決するのですか?

には賛成しがちですが AlekDavis のコメント に同意しがちですが、それでも NT シェルでこれを行ういくつかの方法があります。

私が利用するアプローチは SHIFT コマンドと IF 条件分岐、こんな感じです...。

@ECHO OFF

SET man1=%1
SET man2=%2
SHIFT & SHIFT

:loop
IF NOT "%1"=="" (
    IF "%1"=="-username" (
        SET user=%2
        SHIFT
    )
    IF "%1"=="-otheroption" (
        SET other=%2
        SHIFT
    )
    SHIFT
    GOTO :loop
)

ECHO Man1 = %man1%
ECHO Man2 = %man2%
ECHO Username = %user%
ECHO Other option = %other%

REM ...do stuff here...

:theend