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
呼び出される側のファイルです。
サブルーチン名の記述はありません。
関連の記事