'=========================================================================
' Logger.vbs
' VERSION: 1.0
' AUTHOR: Brian Steinmeyer
' EMAIL: sigkill@sigkillit.com
' WEB: https://sigkillit.com
' DATE: 1/1/2011
' COMMENTS: Pass the Log Name, Message, and Whether It's a New Log File
' to the Sub and It will Create or Append the Specified Log File in the Current
' Directory. The Log Name Can Be a Full Directory Path, or Just the File Name
' To Create It in the Current Directory. This Sub is Useful When You Need to
' Create Multiple Output Files and Use Multiple Subs/Functions.
' EXAMPLE: Call Logger("Test.txt", "Test Message", True)
' Call Logger("C:\Full\Path\test.txt", "Test Message", True)
' Call Logger("C:\Full\Path\test.txt", "Call 2", False)
' Call Logger("C:\Full\Path\test.txt", "Call 3" & vbCrLf & "Line 4", False)
' Call Logger("Test.txt", "Test Message2", False)
'=========================================================================
Option Explicit
Call Logger("Test.txt", "Test Message", True)
Call Logger("C:\Full\Path\test.txt", "Test Message", True)
Call Logger("C:\Full\Path\test.txt", "Call 2", False)
Call Logger("C:\Full\Path\test.txt", "Call 3" & vbCrLf & "Line 4", False)
Call Logger("Test.txt", "Test Message2", False)
Wscript.Echo "Finished"
Private Sub Logger(fileName, logMessage, blnNewLog)
On Error Resume Next
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim objFSO: Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim scriptPath: scriptPath = Left(WScript.ScriptFullName,InstrRev(WScript.ScriptFullName,"\"))
Dim logName
If InStr(1,fileName,"\",1) > 0 Then
logName = fileName
If objFSO.DriveExists(objFSO.GetDriveName(logName)) Then
If StrComp(objFSO.GetExtensionName(logName), "", 1) = 0 Then
If Not objFSO.FolderExists(logName) Then
If objFSO.FolderExists(objFSO.GetParentFolderName(logName)) Then
objFSO.CreateFolder logName 'Create Folder In Current Path
Exit Sub
Else
Call Logger(objFSO.GetParentFolderName(logName), logMessage, blnNewLog) 'Recurse Creating Parent Folder
Call Logger(logName, logMessage, blnNewLog) 'Recurse Creating Current Folder
Exit Sub
End If
End If
Else
If Not objFSO.FileExists(logName) Then
If Not objFSO.FolderExists(objFSO.GetParentFolderName(logName)) Then
Call Logger(objFSO.GetParentFolderName(logName), logMessage, blnNewLog) 'Recurse Creating Parent Folder
Call Logger(logName, logMessage, blnNewLog) 'Recurse Creating Current Folder
End If
End If
End If
End If
Else
logName = scriptPath & fileName
End If
Dim logFile
If blnNewLog = True Then
Set logFile = objFSO.CreateTextFile(logName, True)
Else
If objFSO.FileExists(logName) Then
Set logFile = objFSO.OpenTextFile(logName, ForAppending, True)
Else
Set logFile = objFSO.CreateTextFile(logName, True)
End If
End If
logFile.WriteLine logMessage
logFile.Close
Set objFSO = Nothing
On Error Goto 0
End Sub