もくじ
→https://qiita.com/tera1707/items/4fda73d86eded283ec4f
やりたいこと
バッチで、同じようなことを複数個所でやるときに、関数っぽいものをつくりたい。
書き方
サブルーチン例.bat
rem -----------
rem 本来の処理
rem -----------
call :MYFUNC
echo returned value is %errorlevel%
pause
exit
rem -----------
rem サブルーチン
rem -----------
:MYFUNC
rem 行いたい処理をここに書く
rem 戻り値を返す
exit /b 123
@echo off
rem -----------
rem 本来の処理
rem -----------
call :MYFUNC "ABC" "DEF"
echo returned value is %errorlevel%
pause
exit
rem -----------
rem サブルーチン
rem -----------
:MYFUNC
echo 一つ目の引数は %1 です
echo 二つ目の引数は %2 です
rem 戻り値を返す
exit /b %321
注意
- 戻り値を返すときは、
exit /b 〇
とする - 戻り値を受ける時は、
%errorlevel%
を見る。 - ただし数値のみ。文字列は不可。参考
- 文字列を返したいときは、別途変数を作ってそこに代入するようにする
- 本来の処理の最後には必ずexitを書くこと。書かないと、そのまま下に抜けていってしまう。
参考
Windows、バッチファイルの戻り値(ERRORLEVEL)に文字列を設定する
http://piyopiyocs.blog115.fc2.com/blog-entry-892.html