バッチファイル実行時に引数を渡すためには、実行するバッチファイルの後にスペースなどを付けて引数を設定することとが可能です。
引数を渡し方
引数を渡す方法
構文
[バッチファイル名(.bat)] [引数]
例
sample1-2.bat 100
複数の引数を設定するには、引数の間を以下の文字で繋げて書くことで可能です。
引数設定
- スペース
- イコール
- カンマ
- セミコロン
・例)
[スペースで複数の引数を設定]
sample1-2.bat 100 TEST hoge 5
[イコールで複数の引数を設定]
sample1-2.bat 100=TEST=hoge=5
[カンマで複数の引数を設定]
sample1-2.bat 100,TEST,hoge,5
[セミコロンで複数の引数を設定]
sample1-2.bat 100;TEST;hoge;5
渡した引数を受け取る
引数を受け取るには「%[引数に設置した左からの順番]」で取得できます。
sample1-2.bat
@echo off
echo %0
echo %1
echo %2
echo %3
結果
C:\sample\bat> sample1-2.bat 100 test 5
sample1-2.bat
100
test
5
「%0」は実行したバッチファイルのファイル名が格納されています。それ以降「%1~3」には引数が左から順番に渡されていることが分かる思います。
ちなみに、引数を何も渡さないと以下のように返ってきます。
C:\sample\bat> sample1-2.bat
sample1-2.bat
ECHO は <OFF> です。
ECHO は <OFF> です。
ECHO は <OFF> です。
スペースを含む文字列を引数に渡す
「複数引数を渡すときはスペースを使う」と説明しましたが、その場合そのままの状態では1つの引数にスペースを含む文字列を渡すことができないこと気にづきます。
他にも「1+1=2」のようにイコールを含む際は、「1+1」と「2」が別の引数として渡されてしまいます。
こういったケースでの対処法として、引数をダブルクォーテーション(")で囲むというやり方があります。
C:\sample\bat> sample1-2.bat "sample test" 100 "1+1=2"
sample1-2.bat
"sample test"
100
"1+1=2"
しかしこのままだと受け取った引数にダブルクォーテーションも一緒に取得され、実際に使う際はダブルクォーテーションをエスケープしなければならず非常に面倒です。
そんな時便利なのが「%~[引数の番号]」です。
「%~1」とすることで、引数の最初と最後のダブルクォーテーションを削除した値を取得することが可能です。
sample1-3.bat
@echo off
echo %0
echo ----------
echo %1
echo %~1
echo ----------
echo %2
echo %~2
echo ----------
echo %3
echo %~3
結果
C:\sample\bat>sample1-3.bat "sample test" 100 "1+1=2"
sample1-3.bat
----------
"sample test"
sample test
----------
100
100
----------
"1+1=2"
1+1=2
基本渡せる引数の個数は10個
Windowsバッチに渡せる引数は一度に10個までです。
sample1-4.bat
@echo off
echo %0
echo %1
echo %10
echo %1%0
echo %11
echo %12
結果
C:\sample\bat> sample1-4.bat a b c d e f g h i 10
sample1-4.bat
a
a0
asample1-4.bat
a1
a2
「%10」とした場合は引数「%1」と数字「0」の組み合わせとして判断されてしまいます。
「%1%0」とした場合は引数「%1」と引数「%0」が結合されて表示されます。
「%11 = %1(a)と1」、「%12 = %1(a)と2」となっているのが分かるかと思います。
解決策としては、「shift」コマンドを利用します。
sample1-5.bat
@echo off
echo 初回-----------
echo %0
echo %1
echo %2
echo %3
echo %7
echo %8
echo %9
echo shift1回目-----------
shift
echo %0
echo %1
echo %2
echo %3
echo %7
echo %8
echo %9
echo shift2回目-----------
shift
echo %0
echo %1
echo %2
echo %3
echo %7
echo %8
echo %9
結果
C:\sample\bat> sample1-5.bat a b c d e f g h i 10
初回-----------
sample1-5.bat
a
b
c
g
h
i
shift1回目-----------
a
b
c
d
h
i
10
shift2回目-----------
b
c
d
e
i
10
ECHO は <OFF> です。
「shift」コマンドを使うことで、引数が1つ左に入れ替わっていることが分かるかと思います。
%1→%0になり、%2→%1になります。
今まで取得できていなかった10番目の引数「10」の値が、「shift」コマンドで%9で取得できています。
以上です。