I was working with an old third party tool that only supported VBScript for programming.  I needed to email a file if the file had more than one row.  All the CSV (Comma Separated Value) files created had the CSV headers on the first line. Basically, this was an error/exception report, so I only wanted to send an email if there was more than one line in the file. The following basically counts the number of Carriage-Return/Line-Feed characters.

set fso=CreateObject("Scripting.FileSystemObject")

fa = "E:\MESSAGES\ACER\PROD\Batch\Out\database_failed_POs_20150916_140035.csv"
countRows = CountRowsInFile(fa)
msgbox "File with Error(s) Only countRows=" & countRows 


fa = "E:\MESSAGES\ACER\PROD\Batch\Out\database_failed_POs_20150916_150009.csv"
countRows = CountRowsInFile(fa)
msgbox "Header Only countRows=" & countRows 

Function CountRowsInFile(filename)
	Dim oFso, oReg, sData, lCount
	Const ForReading = 1
	Set oReg = New RegExp
	sData = Fso.OpenTextFile(filename, ForReading).ReadAll
	With oReg
	    .Global = True
	    .Pattern = "\r\n" 'vbCrLf
	    '.Pattern = "\n" ' vbLf, UTF-8 encoded text file?
	    lCount = .Execute(sData).Count 
	End With
	Set oReg = Nothing
	CountRowsInFile = lCount 
End Function 

 

Above was modeled after post on StackOverflow (basically turned it into a Function).

Filed under: VBScript