batファイル サブルーチン(関数)のサンプル

batファイルのサブルーチン(関数)のサンプルです。

目次

サンプル サブルーチン(関数)
  引数がある場合
  引数の文字列をダブルコーテションでくくる場合
  戻り値(数値)を返す場合
  別ファイルを呼び出す場合

サブルーチン(関数)

call : サブルーチン名 [引数]
:サブルーチン名
処理
exit /b [数値]
  • サブルーチン(関数)は、処理をまとめたものです。
  • callでサブルーチンを呼び出します。
    →サブルーチンの処理が終了すると呼び出し元に処理が戻ります。
  • 引数を受け取ることができます。
    →引数は複数指定できます。省略可能です。
  • exit /b 数値で 数値を呼び出し元に返すことができます。
    →戻り値や返り値と呼ばれます。省略可能です。
    →exitが実行されると、サブルーチン内のそれ以後の処理は実行されません。
  • サブルーチン名の横にある引数を仮引数、呼び出す側にある引数を実引数と呼びます。
  • 以下は、Microsoftのcallのリンクです。
    https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/call

サブルーチン(関数)のサンプルです。

@echo off

call:test1
echo 処理を終了します 出力されます
exit /b

:test1
echo テストです 出力されます
exit /b

3行目は、callで7行目に進みます。
8行目で文字列が出力されます。
9行目でサブルーチンの処理が終了します。
4行目で文字列が出力されます。

引数がある場合

@echo off

call:test1 赤 青
echo 処理を終了します 出力されます
exit /b

:test1
echo %1と%2です 赤と青です 出力されます
exit /b

3行目は、引数が2つ(赤と青)あります。
8行目は、引数の値を出力します。
1つめの引数は%1で、2つめの引数は%2です。

引数の文字列をダブルコーテションでくくる場合

@echo off

call:test1 "赤" "青"
echo 処理を終了します 出力されます
exit /b

:test1
echo %~1と%~2です 赤と青です 出力されます
exit /b

引数の文字列をダブルコーテションでくくる場合、受ける引数は%~1のようにチルダをつけます。

戻り値(数値)を返す場合

@echo off

call:test1
if not %errorlevel% == 0 (
	echo エラー 出力されます
) 
exit /b

:test1
echo テストです 出力されます
exit /b 9

11行目は、戻り値に9を指定しています。
4行目は、戻り値が0でない場合というif文です。
4行目の%errorlevel%は、戻り値の値が入ります。

正常終了の場合は0,異常終了の場合は0以外を返す場合が多いです。

別ファイルを呼び出す場合

呼び出す側のファイル(D:\Test1\test1.bat)

@echo off

call D:\\Test1\\test2 "赤" "青"
REM call %~dp0\test2 "赤" "青"
if not %errorlevel% == 0 (
	echo エラー
) else (
	echo 処理を終了します 出力されます
) 
exit /b

3行目は、別ファイルを呼び出しています。
・callの後のコロンがなくなっています。
・パスの区切りは円マーク(\)を2つ指定します。
・test2.batを呼び出していますが拡張子は省略可能です。
4行目の「%~dp0」は、実行ファイルがある場所を指します。3行目と同じ意味です。

呼び出される側のファイル(D:\Test1\test2.bat)

@echo off

echo %~1と%~2です 赤と青です 出力されます

exit /b 0

呼び出される側のファイルです。
サブルーチン名の記述はありません。

関連の記事

batファイル If文のサンプル(Windows)
batファイル for文 処理を繰り返すサンプル

△上に戻る