バッチファイルでコードを再利用するためのサブルーチン(関数)の作り方を解説します。call・goto・ラベルを組み合わせます。
ラベルとgotoの基本
@echo off
goto :main
:main
echo メイン処理開始
call :greet Taro
call :greet Hanako
echo メイン処理終了
exit /b 0
:greet
echo こんにちは、%1さん!
exit /b 0callでサブルーチンを呼ぶ
| 書き方 | 意味 |
|---|---|
| call :ラベル名 | 同じバッチ内のサブルーチンを呼ぶ |
| call :ラベル名 引数1 引数2 | 引数を渡してサブルーチンを呼ぶ |
| call 別のバッチ.bat | 別のバッチファイルを呼び出す |
| exit /b 0 | サブルーチンから呼び出し元に戻る |
| exit /b 1 | エラーコード1で戻る |
戻り値を返す方法
@echo off
setlocal
call :add 10 20
echo 計算結果: %RESULT%
pause
exit /b 0
:add
set /a RESULT=%1+%2
exit /b 0setlocalとendlocalで変数をスコープ管理
@echo off
set GLOBAL=グローバル変数
call :myFunc
echo GLOBAL: %GLOBAL%
exit /b 0
:myFunc
setlocal
set LOCAL=ローカル変数
echo 関数内: %LOCAL%
endlocal
exit /b 0まとめ
- :ラベル名でサブルーチンを定義しcall :ラベル名で呼び出す
- exit /bでサブルーチンから戻る(exitだとバッチ全体が終了するので注意)
- 戻り値は変数経由で渡すのが一般的
- setlocal/endlocalで変数のスコープを制限できる
- 次の記事ではエラーハンドリングを学ぶ


コメント