【Windowsバッチファイル(.bat)】10個以上の引数を渡す方法


この記事はプロモーションを含みます。

Windows

ホーム > コマンドプロンプト・バッチファイル リファレンス

Windowsのバッチで、10個以上の引数を渡す方法を解説します。

はじめに

Windowsのバッチファイル(*.bat)では、通常引数を9個までしか渡すことが出来ません。
本記事では、10個以上の引数を渡す方法を解説します。

普通に引数を渡してみる

特別なことはせずに、普通に10個以上(ここでは13個)の引数を渡してバッチを実行してみます。

以下は、引数の内容を表示するだけのバッチファイルです。

@echo off

echo 【1】%1
echo 【2】%2
echo 【3】%3
echo 【4】%4
echo 【5】%5
echo 【6】%6
echo 【7】%7
echo 【8】%8
echo 【9】%9
echo 【10】%10
echo 【11】%11
echo 【12】%12
echo 【13】%13

実行例です。9個までは渡した引数が認識されていますが、10個目から「A0」「A1」、、という結果になっています。

10個目の引数で渡した値が「A0」となっている原因ですが、
バッチファイルに記述している「%10」が「%1」と文字列「0」と認識されてしまっているためです。
そのため、「%1」は「A」と文字列「0」が結合されて「A0」となっています。
以降の引数も同様です。

E:\Work>test.bat A B C D E F G H I J K L M
【1】A
【2】B
【3】C
【4】D
【5】E
【6】F
【7】G
【8】H
【9】I
【10】A0
【11】A1
【12】A2
【13】A3

shiftコマンドを使って引数を渡してみる

前項で普通に引数を渡すと、9個までしか認識されないことが分かりました。
ここでは、shiftコマンドを使用することで、10個以上の引数を渡す方法を説明します。

まず、shiftコマンドを1回だけ実行してみます。

@echo off

shift

echo 【1】%1
echo 【2】%2
echo 【3】%3
echo 【4】%4
echo 【5】%5
echo 【6】%6
echo 【7】%7
echo 【8】%8
echo 【9】%9
echo 【10】%10

実行結果です。普通に渡した時には、1つ目の引数は「A」でしたが、
shiftコマンドを実行した後では「B」になっています。
以下のように、shiftコマンドを実行すると、引数を1つずらすことが出来ます。

E:\Work>test.bat A B C D E F G H I J K L M
【1】B
【2】C
【3】D
【4】E
【5】F
【6】G
【7】H
【8】I
【9】J
【10】B0

上記より、引数を13個取得するには、以下のように実行する必要があります。

@echo off

echo 【1】%1【2】%2【3】%3【4】%4【5】%5
echo 【6】%6【7】%7【8】%8【9】%9

shift
shift
shift
shift

echo 【1】%1【2】%2【3】%3【4】%4【5】%5
echo 【6】%6【7】%7【8】%8【9】%9

引数は9個までしか認識しないので、13個まで取得するには、shiftコマンドを4回実行する必要があります。
以下が実行結果です。引数を13個(A~M)取得することが出来ました。

shiftコマンドを実行すると、A~Dまでは消えてしまうので、事前に変数などに格納しておく必要があります。

E:\Work>test.bat A B C D E F G H I J K L M
【1】A【2】B【3】C【4】D【5】E
【6】F【7】G【8】H【9】I
【1】E【2】F【3】G【4】H【5】I
【6】J【7】K【8】L【9】M

コメント

タイトルとURLをコピーしました