'========================================================================= ' Logger.vbs ' VERSION: 1.0 ' AUTHOR: Brian Steinmeyer ' EMAIL: [email protected] ' 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