IT バッチ プログラミング

バッチでロギング


 
バッチ関数化のススメその1~その3でバッチを関数化するテクニックを紹介してきました。今回の記事は前回までの記事の続きの内容なので事前に読んでおいて頂ければと思います。
 


バッチ関数化のススメ~その2~

前回の記事に引き続きバッチで関数を使うためのコツを紹介します。

続きを見る


バッチ関数化のススメ~その3~

より実用的な処理を書く準備として別ファイルに書かれた関数を実行する方法を紹介します。

続きを見る


 

関数化したバッチの使い方

処理を関数化する時、目的の1つには一度書いた処理を流用する事ではないでしょうか。
 
バッチ関数化のススメその1、その2でcallを使ってバッチを関数化をする方法を紹介しました。この方法で関数化した処理を流用すると毎回関数化した部分をコピー&ペーストする事になります。
 
もし関数化した処理に修正が必要となった場合、色々な所にコピーした処理を一つ一つ直していくのは骨が折れます。
 
そこでバッチ関数化のススメその3で紹介した別ファイルに定義された関数を実行する方法を使えばある程度関数化した処理を1つのファイルにまとめて書いてファイル単位で関数化した処理を流用化する事が可能になります。
 
修正が必要になった場合も1ファイルのみ修正すればいいので簡単です。
 

ロギング

話は変わりますがなにがしか業務で使う処理を書く場合、ログ出力は必須の機能ではないでしょうか。そこでバッチ関数化の実例としてこれまで見てきた方法を使ってログ出力関数を書いてみました。
 


 
リンク先のファイルは以下の構成になっています。

ファイル名 用途
logger.cmd ロギング用関数
test_main.cmd テスト用main関数

 
基本的な使い方は下記のとおりです。なお同じ事がlogger.cmdの冒頭にも書いてあります。とりあえず動かしてみたいという方は2つのファイルをダウンロードして同じフォルダに置きtest_main.cmdを実行すれば動きます。

簡単な流れ

  • ログレベル設定
  • ログファイル設定(必要に応じて)
  • ログ出力

 

ログレベル設定

ログレベル設定ではどのレベル以上のログを出力するか設定します。ログ出力時にも同じオプションをつけて実行しますが、その際に設定したログレベル以上のログのみ出力をします。
 
ログレベルをdebugに設定すれば全てをログ出力しますが、errorに設定すればerrorとcriticalのみ出力すると言う具合です。
 

ログレベル

  • debug
  • info
  • warning
  • error
  • critical

 

ログファイル設定

ログファイル出力が必要な場合、ログファイルを設定します。コンソールへの出力のみでログファイルが不要な場合は設定不要です。
 
ログファイルをどう扱うかによって下記2種類から選んで実行して下さい。

関数 ログファイルの扱い
CreateLogFile ログファイル新規作成
ログファイルが既に存在する場合は上書き
OpenLogFile 既存ログファイルに追記
ログファイルが存在しない場合は新規作成

 

ログ出力

さてここまでで設定が終わりましたので、ログ出力できる状態になりました。
 
ログ出力する場合はその出力したいメッセージのレベルを指定してログ出力します。例えばdebugレベルで「main start」と出力する場合は下記の通りに実行します。
 
call "%logger%" debug "main start"
 
これを実行すると下記の様な出力になります。
 

 command
"2021/04/20","23:12:52.67","debug","main start"

 

最後に

回かに分けてバッチを関数化する方法を紹介してきましたが如何でしたでしょうか?
 
バッチは簡単な処理を手軽に書くのに向いていますが、あまり複雑な処理をするのには向きません。それが故にあまり構造化もされていないベタ書きのファイルをよく見かけますが他の処理に流用したり修正したりするのに苦労することがよくあります。
 
今回紹介した方法が皆様の生産性の向上に役立てられればと思います。
 

今後について

Powershellもバッチのように簡単な処理を手軽に書くのによく使われますが、自分の経験ではログ出力をしようとすると少しクセがあってやりにくかったので今回紹介したバッチのロギングのような関数を作っていますのでまた機会を見て紹介したいと思います。

-IT, バッチ, プログラミング

© 2025 アイザックファクトリー