忍者ブログ

デバッグログを出力するVBScript

2022年05月22日
VBScriptを作ってると、デバッグ機能が欲しくなる。
開発環境がなくてメモ帳(otbedit)ベースなので、できることはメッセージボックスで表示。

けど、ループ中にメッセージボックス入れようものなら、
毎回メッセージボックスが出てたまらん。

てな理由からログファイルを出力するVBScriptを作ってみた。

記事を書くときに調べてみたら、有償ソフトでデバッグ環境あんのね。。。
無償トライアル版もあるらしい。今度使ってみよう。
https://www.depthbomb.net/?p=2708#toc6




気を取り直して、デバッグログを出力する仕様について

VBAだとdebug.print(Text)の形式だったので、
DebugText(Text)でログファイルにTextを吐き出す仕様にした。

出力先は定数で設定可能に。して、
該当のフォルダやファイルがなければ
call makeDirEX(Path)で自動的に作成。

実行中のスクリプトファイル名と開始日時を取得して
Textと合わせて書き込む。
ファイル名取得はここを参考に。てか1行かよ!
https://bayashita.com/p/entry/show/174


以下、ソース。




Option Explicit
'デバッグログを出力v01

debugtext("test")

sub DebugText(Text)
const fName = "VBSdebug.log"
const Path = "C:\VBScript\debug\"
call makeDirEX(Path)

dim strNow: strNow = "[" & now & "]"
dim Scriptname : Scriptname = "[" & WScript.ScriptName & "] "

call AppendText(Path & fName,strNow & Scriptname & Text & chr(10))

end sub

Sub makeDirEX(Path)
With CreateObject("Scripting.FileSystemObject")
if right(Path,1)="\" then Path = left(Path,len(Path)-1) '\削除
Dim tmp, j , strDir
tmp = Split(Path, "\")
For j = 0 To UBound(tmp)
If j = 0 Then
strDir = strDir & tmp(j) & "\"
Else
strDir = strDir & tmp(j) & "\"
If .FolderExists(strDir) Then
'あればなにもしない
Else 'なければ作る
.CreateFolder strDir
End If
End If
Next
End With
End Sub

sub AppendText(strFullname,Text)
dim FSO: Set FSO = CreateObject("Scripting.FileSystemObject")
Dim wMode:wMode = 2 '2:書き込みモード、8:追記モード(新規不可)
if FSO.FileExists(strFullname) = true then wMode = 8

With FSO.OpenTextFile(strFullname, wMode, True)
.Write Text
.Close
End With
set FSO = nothing
end sub


PR
Comment
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字