背景
業務で使用するコンソールアプリやデスクトップアプリが便利なのですが、バラバラに管理されておりかつバラバラに配置されているので、それを解決したいと思いました。そこで、下記のようなCLIを使ってそれらを管理しようと考えました。
その際、test 1.0.0 [value1] [value]のように引数を渡せることは知っていましたが、どうせなら下記のようなdotnet [option]コマンドのようにoptionを渡したいと思いました。
dotnet -h
optionを引数から取得する方法
@echo off
set VERSION_CMD=--version
set AILIAS_VERSION_CMD=-v
set VERSION=""
rem enabledelyaedexpansionでコードを呼び出し時ではなく、実際に実行するときに変数を評価する
setlocal enabledelayedexpansion & (
set NEXT_ARG=""
)
for %%a in (%*) do (
if !NEXT_ARG! == "true" (
set VERSION=%%a
set NEXT_ARG=""
)
if %VERSION_CMD% == %%a (
set NEXT_ARG="true"
)
if %AILIAS_VERSION_CMD% == %%a (
set NEXT_ARG="true"
)
)
endlocal & (
set VERSION=%VERSION%
)
echo %VERSION%