【VBScript】実行ログを吐き出せるようにしてみた【初心者】

VBScript
スポンサーリンク

こんにちは朱夏です。

今回は、VBScriptの実行結果をログとして出力する方法を調べてみました。

実装したい要件は以下の様なものです。

  • ログ吐き出し用のファイルは事前に準備
  • ログファイルを開いて追記していく
  • ログの頭にタイムスタンプを付ける

 

それではいってみましょう。

 

[もくじ]
今回書いたコード
実行後のログを見てみる
あとがき

 

今回書いたコード

前回のテキストボックスに入力してもらった名前を使ってメッセージを出力する処理に、ログ出力を実装してみたいと思います。

コードはこちらになります。

Option Explicit

Dim strLogFile, objFSO, strLogMsg, objFile

strLogFile = "F:\vbs学習\テンプレート\log\sample.log"
Set objFSO = CreateObject("Scripting.FileSystemObject")

strLogMsg = "Script Start" : LogWrite(strLogMsg)

Dim x
x = InputBox("名前を入力してください。")

strLogMsg = "Input Name:" & x : LogWrite(strLogMsg)

msgbox "こんにちは" & x & "さん。"

strLogMsg = "Script Stop" : LogWrite(strLogMsg)

WScript.Quit


'****************************************************
'ログ書き込み処理
'****************************************************

Function LogWrite(strMsg)

strMsg = "[" & FormatDateTime(Now, 0) & "]" & Space(1) & strMsg

Set objFile = objFSO.OpenTextFile(strLogFile,8,True,0)

objFile.WriteLine strMsg

objFile.Close

LogWrite =0

End Function

 

新しいものがたくさん出てきました。
順番に確認していきます。

 

変数の複数宣言

変数を合計4つ宣言するために、”,(カンマ)”で区切って宣言しています。

 

Set objFSO = CreateObject(“Scripting.FileSystemObject”)

ファイルシステムへアクセスするための1行の様です。
ファイルやフォルダを開いたりするときはこれが必要みたいですね。
オブジェクトを扱う場合は変数の頭に「Set」を付ける必要があるみたいです。

 

strLogMsg = “Script Start” : LogWrite(strLogMsg)
strLogMsg = “Input Name:” & x : LogWrite(strLogMsg)
strLogMsg = “Script Stop” : LogWrite(strLogMsg)

上記の3行は、ログの書き込み処理をしている行です。
変数strLogMsgにログに書き込むメッセージを代入しています。
「:(コロン)」の後ろの部分では、コードの後半に書かれたログ書き込処理の関数「LogWrite」を呼び出して、strLogMsgの情報を受け渡しています。

 

WScript.Quit

実行処理の終了宣言

 

‘ログ書き込み処理

VBScriptのコメントアウトです。
コメントアウトしたい行の最初にシングルクォーテーションを付けると、その行はコメントアウトとして扱われます。

 

Function LogWrite(strMsg)

LogWriteという関数を作成するという宣言部分です。

 

Set objFile = objFSO.OpenTextFile(strLogFile,8,True,0)

変数strLogFileで指定したファイルを開く処理です。
こちらもオブジェクトを扱う変数になるのでSetが頭についています。

 

objFile.WriteLine strMsg

開いたファイルにログを追記する処理です。
WriteLineが、ファイルに書き込むためのメソッドです。
strMsgに入っているログを書き込みます。

 

objFile.Close

開いていたファイルを閉じる処理です。

 

LogWrite =0

関数LogWriteの中身を0でリセットしています。

 

End Function

関数の終了宣言です。
この行までが、関数LogWriteの処理のかたまりになります。

 

実行後のログを見てみる

実際に実行してみて、ログを確認してみます。

ログには以下の様なテキストが吐き出されていました。

[2020/05/14 19:23:06] Script Start
[2020/05/14 19:23:11] Input Name:朱夏
[2020/05/14 19:23:13] Script Stop

 

処理の中でログを書き込むように指定した3行がちゃんと出力されました。

 

あとがき

というわけで、今回はVBScriptで実行したログを出力する方法を調べてみました。

ログ出力を実装するために、ファイルへのアクセス方法や、関数の作成方法などたくさんの事を学習する事が出来ました。

今回のまとめはこちら。

  • FileSystemObjectでファイルシステムにアクセス
  • Functionで関数を作成
  • OpenTextFileで指定のファイルを開く
  • WriteLineでテキストの書き込み
  • Closeでファイルを閉じる必要あり

 

実装できるようになることもそうですが、システム運用の仕事をしていると、吐き出しているログの内容にどんなものが含まれているのかといった事を理解できると、トラブルなどの問題解決に役立つんですよね。

今回は以上です。
次回もよろしくお願いします。

 

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