Windowsのbat(バッチファイル)で関数(サブルーチン)を扱う方法

バッチファイルに複雑な処理を記述する場合や、同じ処理を何度も記述する場合、他のプログラム言語と同じように関数(サブルーチン)を使いたくなります。

本記事では、Windowsのbat(バッチファイル)で関数(サブルーチン)を扱う方法について紹介したいと思います。

関数(サブルーチン)の記述方法

関数を呼び出す方法と、関数自体の記述方法について紹介します。

関数の実行方法

関数を実行する場合は、以下の文法で記述します。その関数名の関数がどこかで記述されている必要があります。引数を与えるかはオプションです。

call :関数名 [引数]

関数自体の記述方法

関数自体の記述方法は以下となります。こちらもオプションですが、戻り値を与えることもできます。

:関数名
処理
exit /b [戻り値(数値)]

関数(サブルーチン)を用いたバッチファイルの例

戻り値や引数を用いないプログラムの例

非常にシンプルなバッチファイルですが、以下は「test_function」という関数を3回実行する関数となっています。関数の中で「echo test」がされ、コンソールに「test」という文字が出力されます。

@echo off

echo startz
call :test_function
call :test_function
call :test_function
echo finish
pause

:test_function
echo test
exit /b

実行すると以下のような結果となります。

引数を利用するプログラムと例

引数を利用する場合は、以下のように関数名の後に渡したい引数を指定します。今回は「abc」と「def」を渡しています。引数は複数でも渡すことができます。

関数内で引数にアクセスする場合は「%1」「%2」……を使います。%1が一個目の引数に該当する変数です。

@echo off

echo start
call :test_function abc def
echo finish
pause

:test_function 
echo %1
echo %2
exit /b

上記を実行すると、以下の出力が得られます。

戻り値を利用するプログラムと例

Windowsのバッチファイルでは、戻り値として指定できるのは一つの数値のみとなります。「exit \b」の後に戻り値を指定します。以下のプログラムでは「10」が該当します。

戻ってきた値は「%errorlevel%」で参照が可能です。名前からわかる通り、最後まで実行できたら「0」を返すなど、エラーをチェックする用途で使うことを想定しているようです。

@echo off

echo start
call :test_function abc def
echo %errorlevel%
echo finish
pause

:test_function 
echo %1
echo %2
exit /b 10

実行すると以下のような結果となります。10という値が返っていることがわかります。

スポンサーリンク

シェアする

フォローする