バッチファイルを使おう(初心者向け・引数編)

「引数」はプログラミングにおいてとても重要な仕組みです。クラスやメソッド、プロパティに値を渡して~というのは日々使うでしょう。もちろん、バッチファイルにも引数は存在します。今回はバッチファイルの引数について紹介します。

バッチファイルの引数

バッチファイルに引数を渡す方法は2つあります。コマンドプロンプト上から引数を渡す方法と、バッチファイル内で別のバッチファイルを呼び出す時に引数を渡す方法です。

コマンドプロンプト上から引数を渡す

バッチファイルに引数を渡す時はコマンドプロンプト上から引数を渡します。コマンドライン引数と呼ばれるものです。説明するよりも見て頂いた方が早いと思うので早速以下をご覧下さい。

バッチファイルパス 第一引数 第二引数 ....

上記が基本形です。具体的な記述は以下です。

hoge.bat param1 param2 ....

そんなに難しいことではありません。バッチファイルのパスを記載して、半角スペースを空けて第一引数、半角スペースを空けて第二引数・・・と言う具合に記述します。

バッチファイル内で別のバッチファイルに引数を渡す

これも簡単です。callコマンドで別のバッチファイルを呼び出す時に、そのまま引数を渡すだけです。

call ファイルパス 第一引数 第二引数 ....

上記が基本形です。具体的な記述は以下です。

call hoge.bat param1 param2 ....

バッチファイル内から別のバッチファイルを呼び出す時も同様に、バッチファイルのパスを記載して、半角スペースを空けて第一引数、半角スペースを空けて第二引数・・・と言う具合に記述します。

仮引数の記述

引数の渡し方は先述の通りに記載すれば大丈夫です。値を受け取る側(仮引数)もとても簡単です。バッチファイルに引数を渡すと、「%1」から「%9」という仮引数が自動で用意されます。例として、簡単なバッチファイルを用意します。

@echo off

set hoge=%1

echo %hoge%

pause

上記のバッチファイルの内容自体はとても簡単です。バッチファイルに渡した引数をコマンドプロンプト上に表示するだけのものです。バッチファイル名をhoge.bat等にして、バッチファイルを作成し、コマンドプロンプトからバッチファイルに引数を渡して実行してみます。例えば、「Hello」と渡したい時は以下の様に記述します。

c:\>c:\temp\hoge.bat Hello

すると、コマンドプロンプト上に「Hello」と表示されます。

引数の注意点

引数を渡すときの区切り文字はスペースだけではなく、セミコロン「;」、カンマ「,」、イコール「=」も含めて合計4種類あります。しかしながら、区切り文字を文字として扱いたいという事が多々ありますね。その場合は、ダブルクォーテーションで括ります。例えば、セミコロンを引数として渡したい場合は以下の様に記述します。

hoge.bat "param;1" "param;2" ...

では、先ほど作成した簡単なバッチにセミコロンを含んだ引数を渡してみましょう。

c:\>c:\temp\hoge.bat "Hello;"

すると、以下の様にコマンドプロンプトに表示されます。

"Hello;"

おや?恐らく、「Hello;」と表示されるだろうと思った方が多いかもしれません。しかしながら、ダブルクォーテーションも表示されています。これでは少し残念なので、バッチファイルの内容に少しだけ細工をします。仮引数「%1」と記載している場合、「%」の直ぐ後ろに「~」を記載して下さい。「%~1」と記載してバッチを再度実行すると「Hello;」と表示されるようになります。

まとめ

今回はバッチファイルの引数の基礎について紹介しました。基礎の基礎なので実務で即実践は難しいかもしれませんが、基礎を抑えておけば応用にシフトしやすいので、少し遊び程度で練習してみて下さい。