Windows:バッチ:サブルーチンの戻り値を文字列として取得する


exit /b [数値] と errorlevelを使わない方法

  • 文字列や複数の戻り値を返したいときにerrorlevelを使った方法ではできない。
  • そもそも、errorlevelはエラーについて設定するべきなのに、それ以外の値を当てるのは不自然。
@echo off

:: =================
:: 実行部分
:: =================

:main
   setlocal

   REM サブルーチンを呼び出し。第3引数に戻り値の変数にする文字列を設定
   call :join_values "A" ".txt" joined

   REM 第3引数を参照。A.txtと表示される
   echo %joined%

   endlocal
   exit /b

:: ===============================
:: 値結合
:: @param 結合値前半
:: @param 結合値後半
:: @param 戻り値:結合した値
:: ===============================

:join_values
   setlocal

   set v1=%~1
   set v2=%~2
   set ret=%v1%%v2%

   REM 第3引数の文字列を動的に変数として宣言し、値を設定。
   endlocal && set %3=%ret%
   exit /b