ひとりになりたい

ノーストレスで生きていく

Windowsバッチでログ出力共通関数を作る

ログ出力共通関数を作り、標準出力とログにメッセージを出力するようにします。

 

ログ出力共通関数の中身

rem -------------------------------------------------------------
rem メッセージ用関数
rem -------------------------------------------------------------
:MSG
    set MSG_TIME=%DATE% %TIME%
    echo %MSG_TIME%[%1] %2
    echo %MSG_TIME%[%1] %2 >> %LOG_FILE%
exit /b

 

出力イメージ(ログ)

2023/10/22 18:21:26.25[INFO] "--------------------------------------------------"
2023/10/22 18:21:26.27[INFO] "変数定義"
2023/10/22 18:21:26.30[INFO] "--------------------------------------------------"
2023/10/22 18:21:26.33[INFO] "[PG_DIR      ] C:\scripts\"
2023/10/22 18:21:26.34[INFO] "[PG_NAME     ] test_script"

 

出力イメージ(標準出力)

 

呼び出し方

call :MSG INFO "--------------------------------------------------"
call :MSG INFO "変数定義"
call :MSG INFO "--------------------------------------------------"
call :MSG INFO "[PG_DIR      ] %PG_DIR%"
call :MSG INFO "[PG_NAME     ] %PG_NAME%"

 

 

サンプル

@echo off
setlocal enabledelayedexpansion

rem **************************************************************
rem 変数定義
rem **************************************************************
set PG_DIR=%~dp0
set PG_NAME=%~n0
set EXE_DATE=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
set EXE_TIME=%TIME: =0%
set EXE_TIME=%EXE_TIME:~0,2%%EXE_TIME:~3,2%%EXE_TIME:~6,2%
set LOG_FILE=%PG_DIR%%PG_NAME%_%COMPUTERNAME%_%EXE_DATE%%EXE_TIME%.log

call :MSG INFO "--------------------------------------------------"
call :MSG INFO "変数定義"
call :MSG INFO "--------------------------------------------------"
call :MSG INFO "[PG_DIR      ] %PG_DIR%"
call :MSG INFO "[PG_NAME     ] %PG_NAME%"
call :MSG INFO "[EXE_DATE    ] %EXE_DATE%"
call :MSG INFO "[EXE_TIME    ] %EXE_TIME%"
call :MSG INFO "[LOG_FILE    ] %LOG_FILE%"
call :MSG INFO

 

rem **************************************************************
rem 関数
rem **************************************************************
rem -------------------------------------------------------------
rem メッセージ用関数
rem -------------------------------------------------------------
rem INFO,ERR,WAR
:MSG
    set MSG_TIME=%DATE% %TIME%
    echo %MSG_TIME%[%1] %2
    echo %MSG_TIME%[%1] %2 >> %LOG_FILE%
exit /b