バッチで関数を使うには少し工夫が必要です。何回かに分けてそのコツを紹介します。 続きを見る 前回の記事に引き続きバッチで関数を使うためのコツを紹介します。 続きを見る より実用的な処理を書く準備として別ファイルに書かれた関数を実行する方法を紹介します。 続きを見る
バッチ関数化のススメその1~その3でバッチを関数化するテクニックを紹介してきました。今回の記事は前回までの記事の続きの内容なので事前に読んでおいて頂ければと思います。
バッチ関数化のススメ~その1~
バッチ関数化のススメ~その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もバッチのように簡単な処理を手軽に書くのによく使われますが、自分の経験ではログ出力をしようとすると少しクセがあってやりにくかったので今回紹介したバッチのロギングのような関数を作っていますのでまた機会を見て紹介したいと思います。