やりたいこと検索

バッチファイルでサブルーチンを使用する

 

目次

 

サブルーチンとは

サブルーチンとは、まとまった処理をひとまとめにして、いつでもその処理を呼び出せるようにしたものを言います。

コマンドの集合体」という言い方もできるでしょう。

 

サブルーチンの作り方・使用方法

サブルーチンは「call」コマンドとラベルを使って作ります。

といった感じです。

 

例えば、100円の消費税と消費税込みの値段を求めるバッチプログラム(get_value.bat)をサブルーチンを用いて書いた例を以下に示します。

これを、実行すると、下図のような結果を得ます。

バッチファイルでサブルーチンを使用する 消費税と消費税込みの値段を求める

9行目から15行目に100円の消費税を求めて値段を表示する処理をまとめて書きました。これが、サブルーチンです。

9行目の「:get_value」ラベルがサブルーチン名であり、サブルーチンを呼び出すときはこの名前を指定することで呼び出すことができます。

このようにサブルーチン名を示すラベルの下に処理したいプログラムコードをまとめて書きます。

このサブルーチンの呼び出しは「call」コマンドを使って4行目で行っています。ちなみに、「call」コマンドの変わりに「goto」コマンドを使うこともできます。バッチファイルの動作としては、全く同じです。

 

引数を使用する

サブルーチンには引数の受け渡しも可能です。「引数」について知りたいかたは、「%1,%2…%X(引数とプレースホルダー) -コマンド別解説-」を参照下さい。

通常のバッチファイルを実行するようにラベルの後にスペースを挟んで引数を指定します。

 

以下、前節のバッチファイルを任意の値段について消費税を求めるバッチファイル(get_value_any.bat)に編集しました。任意の値段は引数として指定するようにしています。

4行目のサブルーチンの呼び出し時に引数「120」を指定して、サブルーチンに引き渡しています。サブルーチン内ではその引数を「%1」として参照できます。このあたりは通常のバッチファイルと同様です。

 

複数のサブルーチンを定義する場合

複数のサブルーチンを定義したい場合は、メインプログラムの下にまとめて書きます。

メインプログラムとは、サブルーチンを呼び出したりする処理の根幹となる処理部分です(「get_value_any.bat」でいうと、3行目から6行目)。

複数のサブルーチンを使用する場合、サブルーチンの処理の最後に「exit /b」を入れるのを忘れないようにしましょう。これがないと、その下に書いてあるコードまで実行してしまい、メインのプログラムに戻ってくれません。

「exit /b」は前節のプログラム(get_value_any.bat)の5行目に記述しているように、プログラムの終了を意味するコマンドですが、サブルーチン内で指定した場合はそのサブルーチンの終了を意味しメインのプログラムに戻ってくれます

 

以下に、複数のサブルーチンを定義する場合のプログラムのひな型を示します。

 

具体的な例として、前節のプログラム(get_value_any.bat)をさらに編集して、支払った金額からおつりを計算するようにしました。

支払った金額を計算し表示するサブルーチンを新たに加えます。支払った金額は引数として受け渡します。

4行目で消費税を含めた金額を計算するサブルーチンを呼び出し、続いて5行目でおつりのサブルーチンを呼び出しています。

おつりサブルーチン(pay_back)は消費税サブルーチン(get_value)の後に書いていますが、消費税サブルーチンの処理の最後には「exit /b」を記述しています(18行目)ので、これによってこの場所から上部のメインプログラムに戻ります。

これがないと、その下のおつりサブルーチンまで処理が行われてしまいますので、サブルーチンの最後には必ず「exit /b」を付けます。

 

以下、実行結果です。

バッチファイルでサブルーチンを使用する おつりを計算するサブルーチンを追加

 

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


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


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

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


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


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


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


詳しくみる

関連ページ

コメント

コメントを残す