やりたいこと検索

10つ以上の引数を指定する

 

目次

 

10つ以上の引数を利用する

通常、バッチファイルに引き渡せる引数の最大値は9つです。これは、引数が代入されるプレースホルダーがの上限が9つまで「%1, %2,…%9」であることが原因であり、これは変更できません。しかし、「shift」コマンドをうまく利用すれば10以上の引数を読み込むことが可能です。

「shift」コマンドの役目は、引数を一つ前にズラすことです。一番若い引数(最も左側の引数)を消して、全体的に引数を左にスライドさせます。

バッチファイルを引数を指定して実行するとき、

と入力しますが、これらの引数と対応するプレースホルダー「%1, %2,…%9」は、

引数 arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9
プレースホルダー %1 %2 %3 %4 %5 %6 %7 %8 %9

であり、9番目の引数(arg9)までしか格納できません。

ここで、「shift」を一回実行すると、

引数 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10
プレースホルダー %1 %2 %3 %4 %5 %6 %7 %8 %9

となり、第1引数の「arg1」が消え、引数全体がスライドしました。これで始めは使えなかった引数「arg10」が「%9」に入るようになり使用可能になりました。

さらに、もう一度「shift」を実行すれば、

引数 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10 arg11
プレースホルダー %1 %2 %3 %4 %5 %6 %7 %8 %9

となり、さらに「arg11」も使えるようになりました。

実際に試してみましょう。「arg1」から「arg12」までの引数を指定して、「shift」を3回実行し「%9」に「arg12」を代入してみます。

以下、実行結果です。

10つ以上の引数を指定する shiftを利用して10以上の引数を利用する

 

配列にすべての引数情報を格納する(一般的な使い方)

前節のように、「shift」を使用していけば取得したい引数まで到達できます。しかし、その分だけ若い引数は削除され利用できなくなるので、全ての引数すべてを利用したいときは「shift」コマンドとループ文を用いて全ての引数を配列(もどき)に代入する方法がよく用いられます。

配列もどきについては、「バッチファイルで配列を使う -やりたいことから検索-」を参照下さい。配列もどきを使えば配列名をarray[?]と指定するだけで、

arg1 ⇒ array[1]
arg2 ⇒ array[2]

arg9 ⇒ array[9]
arg10 ⇒ array[10]
arg11 ⇒ array[11]
arg12 ⇒ array[12]

というようにarray[?]にすべての引数が入ってくれるため、いつでもすべての引数を使用できます。

以下が「shift」を利用して配列に全ての引数を代入するバッチファイルです。

3行目は引数がない場合は、プログラムを終了するコマンドです。

5行目からが配列「array[?]」に引数を格納していくコードになります。「set」コマンドで変数「count」に初期値1を代入しています。

6行目からはラベル「:loop」と「goto」を使ったループ文です。ループ文の中の7行目で引数があるかをチェックしあればループ内が実行されます。

8行目で配列「array[?]」に引数を代入します。始めは引数は%1ですので、array[1]に第1引数「arg1」が代入されます。

9行目で変数「count」に1を足します。

10行目で「shift」を実行すると、引数が左へスライドしますので第1引数が消えて、%1には第2引数(arg2)が入ります。

そして、ループの先頭に戻りarray[2]に第2引数「arg2」が格納されるという流れです。引数が無くなれば7行目でループから出ます。

最後に15行目以下ですべての引数がきちんと代入されたかを確認しています。

以下の実行例は12つの引数を指定した場合です。

10つ以上の引数を指定する 10以上の引数を配列に代入

10つ以上の引数がきちんと配列に代入されていることが分かります。

Windowsバッチファイル初心者へ向けた入門書を作成しました


Windowsバッチファイル初心者の方へ向けた入門書(PDF)を作成しました。


・初めてWindowsバッチファイルを勉強してみようと思っている方

・使ったことはあるが一から基礎を学び直したい方


へ向けて丁寧な解説を行っています。


「全くプログラムを知らない方でも、この入門書を読んだ後には、Windowsバッチファイルの中級者レベルになれるように」をコンセプトに執筆したものです。


この本を読めば、バッチファイルを使ったファイルやフォルダの操作に関しては一通りのことができるようになります。そうなればもう十分中級者と呼べるレベルですので、あとは自分のやりたいことを実現しようとする中で徐々に知識を蓄えていくだけですぐに上級者へなれるでしょう。


詳しくみる

関連ページ

コメントを残す