Windowsバッチファイルのサンプル(関数・サブルーチン)

関数やサブルーチンとは、特定の処理を再利用できるように部品化したもの。
部品化して再利用することで、同じ処理を何度も書かなくて良くなる。
結果として、開発作業のスピード向上やソースコードの品質向上が期待できる。

関数は呼出元に何かしらの結果を返すもの、サブルーチンは結果を返さないものという区分けで呼び分けることもあるが、同じ意味として扱われることが多い。

@echo off
setlocal

call :funcDateTime 開始

call :funcCalc 10 2

call :funcCalc 987 123

call :funcString ABCDEFGHIJKL

rem 引数の値にスペースが含まれている場合、
rem "(ダブルクォーテーション)で囲む
call :funcString "ABC DEF GHI JKL"

call :funcString あいうえおかきくけこさしすせそ

call :funcDateTime 終了

pause
exit


:funcDateTime
    echo 日付/時刻取得サブルーチン

    rem 「%date%」で現在日付を取得できる
    rem 例:2023/08/22

    rem 「%time%」で現在時刻(ミリ秒含む)を取得できる
    rem 時分秒部分が1桁(0時~9時など)の場合、
    rem 前ゼロではなくスペースになる
    rem 例: 9: 5:16.04

    rem 日付の加工
    rem /(スラッシュ) 部分を削除  例:20230822
    set tmpdate1=%date:/=%

    rem 時刻の加工
    rem 1.時分秒部分だけ取得    例: 9: 5:16
    rem 2.スペースをゼロに置換   例:09:05:16
    rem 3.:(コロン) 部分を削除  例:090516
    set tmptime1=%time:~0,8%
    set tmptime2=%tmptime1: =0%
    set tmptime3=%tmptime2::=%

    echo %1 %tmpdate1% %tmptime3%

    rem サブルーチンを終了する
    rem /B オプションが無いと、バッチ全体が終了してしまい、
    rem 後続の処理が動かなくなる
    exit /B 0


:funcCalc
    echo 計算サブルーチン
    echo 引数  %1  %2

    rem 計算
    set /a wa    = %1 + %2
    set /a sa    = %1 - %2
    set /a seki  = %1 * %2
    set /a sho   = %1 / %2
    set /a amari = %1 %% %2

    rem 解を表示
    echo 和    %wa%
    echo 差    %sa%
    echo 積    %seki%
    echo 商    %sho%
    echo 余り  %amari%

    exit /B 0


:funcString
    echo 文字列操作サブルーチン
    echo 引数  %1

    rem 引数内の文字列が "(ダブルクォーテーション) で
    rem 囲われている場合、「~(チルダ)」指定で外せる
    set str=%~1

    rem 文字列を途中から末尾まで切り出す「%str:~x%」
    rem 先頭から数える場合、xは 0 から始まる(1文字目が0)
    rem x+1文字目から末尾までの文字が切り出される
    rem 末尾を指定する場合は -x にする
    echo 3文字目から、末尾まで  %str:~2%
    echo 末尾から5文字          %str:~-5%


    rem 文字列を部分的に切り出す「%str:~x,y%」
    rem 末尾を指定する場合は -x や -y にする
    echo 1文字目から、3文字分  %str:~0,3%
    echo 4文字目から、2文字分  %str:~3,2%

    echo 2文字目から、末尾2文字を除く      %str:~1,-2%
    echo 末尾5文字目から、2文字分          %str:~-5,2%
    echo 末尾5文字目から、末尾2文字を除く  %str:~-5,-2%

    exit /B 0

タイトルとURLをコピーしました