1. ホーム
  2. shell

[解決済み] バッチファイル - コマンドライン引数の数

2022-10-11 06:07:47

質問

いくつかのシェル スクリプトをバッチ ファイルに変換しているところですが、1 つだけ見つからないものがあります...それは、コマンド ライン引数の数を単純にカウントすることです。

例えば、ある場合。

myapp foo bar

シェルで

  • $# -> 2
  • $* -> foo bar
  • $0 -> myapp
  • 1ドル -> foo
  • $2 -> バー

一括で

  • ?? -> 2 <---- どのようなコマンドですか!
  • %* -> foo bar
  • 0 -> myapp
  • 1 -> foo
  • 2 -> バー

いろいろ調べてみましたが、間違った場所を探しているのか、それとも私が盲目なのか、渡されたコマンドライン引数の数のカウントを取得する方法が見つからないようです。

シェルの "$#" のようなバッチファイル用のコマンドはありますか?

ps. 私が見つけた最も近いものは、%1sを繰り返し、'shift'を使うことですが、私はスクリプトの後で%1,%2などを参照する必要があるので、それは良いことではありません。

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

少しググってみると、以下のような結果が得られます。 wikibooks :

set argC=0
for %%x in (%*) do Set /A argC+=1

echo %argC%

cmd.exeは昔のDOS時代から少し進化しているようですね :)