サブルーチンとは?

BASH,bat,バッチ

サブルーチンとは、コマンドの集合体のことです。ある処理を達成するために、コマンドを重ねれ合わせて、集まりです。

サブルーチンを作ることで、同じ処理をいちいちコマンドを打ち込む必要がなくなるため、効率的に作業ができるほか、ミスを探すときに役に立ちます。

今回はバッチファイルでのサブルーチンの作り方を解説します。

サブルーチンの作り方

サブルーチンの作り方は「call」コマンドとラベルを使います。ラベルは目印みたいなもので、callコマンドでラベルを呼び出すことができます。使い方は下記のように記載します。

call :ラベル名
:ラベル名
処理内容

ラベルは:を使い、名前を記載します。このラベルをcallコマンドで呼び出して処理をします。次に実際にバッチファイルを作って解説します。

@echo off
call :ex1
echo ここは飛ばされるよ
exit /b
:ex1
set /a ke=100+100
echo %ke%
set /a ye=%ke%*3
echo %ye%

このバッチファイルの解説をします。まず1行目ですが、@echo offはコマンド処理を表示しません。

2行目のcall :ex1では、5行目以降のラベルの処理を行います。和訳すると、ラベルex1をcallするとなり、ラベルex1を実行することになります。

3行目のechoはコマンドの処理の結果がわかりやすいように記載してます。本来なら上からコマンドが処理されますが、今回はcallコマンドでラベルを呼び出しているので、最終行に内容が表示されます。

4行目のexit /bはコマンド処理を終了するという機能です。

5行目以降はラベルの内容となってます。今回のラベル名はex1としました。ラベルの内容は足し算、掛け算で単純な内容となってます。

6行目、8行目でsetコマンドを使って、足し算、掛け算を行なっています。四則計算を行う際はset /aコマンドを使い、計算をします。setコマンドで計算を行っていますので、変数の中身に格納されてます。この変数を7行目、9行目のecho 変数名で計算結果を表示します。

コマンドスクリプトの結果はこちら。

サブルーチンの内容が表示され、最後にecho変数が表示されます。このようにサブルーチンを使うには、callコマンドとラベルを利用するとできることができます。

引数を利用して、サブルーチンを実行する

次に引数を使って、サブルーチンを実行します。引数を使うには、ラベルの後に空白を入れて、数字や文字を入れるだけです。それでは下記の例を見てみましょう。

@echo off
call :ex2 1 2
echo ここは飛ばされるよ
exit /b
:ex2
set /a ke=%1+100
echo %ke%
set /a ye=%ke%*%2
echo %ye%

各行について解説します。まず1行目ですが、@echo offはコマンド処理を表示しません。

2行目のcall :ex2 1 2は引数を使ってます。後ほど、%1と%2が出てきますが、この引数と連動してます。

  • call :ex2 1 2▶︎%1
  • call :ex2 1 2▶︎%2

ラベルの後に続く数字が%1や%2に連動しています。

3行目のechoはコマンドの処理の結果がわかりやすいように記載してます。本来なら上からコマンドが処理されますが、今回はcallコマンドでラベルを呼び出しているので、最終行に内容が表示されます。

4行目のexit /bはコマンド処理を終了するという機能です。

5行目以降はラベルの内容となってます。今回のラベル名はex2としました。ラベルの内容は足し算、掛け算で単純な内容となってます。

6行目でset /a ke=%1+100のポイントは%1です。set /aコマンドは四則計算を行った結果を変数に入れる機能です。%1は先ほどの2行目で引数を設定した「1」が入ります。

set /a ke=%1+100=1+100=101

という計算結果になり、変数keには101の数が入ります。

7行目は6行目の変数keをechoコマンドで表示します。

8行目は新たに引数を使って、四則計算を行います。まず6行目で設定した変数keを使います。

この変数keに引数の%2を掛けます。変数keは先程解説したとおり数字の101が入っています。

次に引数%2ですが、これも先程2行目でcallコマンドでラベル後に入れた数字の2が入ります。

set /a ye=%ke%*%2=101×2=202

以上が計算結果により変数yeには202という数字が入りました。

9行目で変数yeを呼び出します。

解説が長くなりました。コマンドスクリプトの結果はこちら。

ラベルが実行され、四則計算の結果が表示されました。

複数のサブルーチンを実行する

複数のサブルーチンを実行する際は、複数のラベルを作成し、callコマンドで計算するだけです。

call :[ラベル名1] [引数...]
call :[ラベル名2] [引数...]
exit /b
 
:[ラベル名1]
 
[処理内容]
 
exit /b
 
:[ラベル名2]
 
[処理内容]
 
exit /b

試しに下記の複数のサブルーチンが記載したファイルを実行してみましょう。

@echo off
call :ex1 1 2
call :ex2 3 4

echo ここは飛ばされるよ
exit /b

:ex1
set /a ke=%1+100
echo %ke%
set /a ye=%ke%*%2
echo %ye%
exit /b

:ex2
set /a ke=%1+100
echo %ke%
set /a ye=%ke%*%2
echo %ye%
exit /b

コマンドスクリプトの結果はこちら。各計算結果が表示されました。

コメント

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