Goal: To run a VBScript that checks a folder daily, and reports if no files were saved to it that day. Ignore the files that exist from previous days.
Scenario: A logfile is created everyday in C:\Temp at 3am. This is what tells us that the system performed a task. If a log file isn’t generated, then the task crashed. I wrote this to check the Temp folder for a file created today, and to email me if it doesn’t exist.
Solution thus far:
option explicit
dim fileSystem, folder, file
dim path
path = "C:\Temp"
Set fileSystem = CreateObject("Scripting.FileSystemObject")
Set folder = fileSystem.GetFolder(path)
for each file in folder.Files
if file.DateLastModified > dateadd("h", -24, Now) then
'WScript.Echo file.Name & " last modified at " & file.DateLastModified
else
SendEmail
'WScript.Echo "this should have sent an email."
end if
next
Function SendEmail()
'Send Email notification function here (this part works already)
End Function
Issue I am having:
I can’t seem to wrap my head around a way to have the script ignore files in the folder from previous days.
In my test, I have C:\Temp populuated with a file modified today, and a file modified on 7/10/12. Because this scenario matches both the ‘then’ and the ‘else’ statement, it’s doing both.
I think I just need a slight modification on the loop to tell it
– Ignore files not dated ‘today’
– Send an email if no files exist today.
Any help would be awesome. I just can’t seem to ‘see’ the answer.
You’re close. The problem is is you were looping through and checking every single file. You need to only check if one file doesn’t exist. I’m not that familiar with vbscript, so you may need to tweak this a bit, but what I did is add a variable
foundand initialized it tofalse. If you find a file created in past 24 hours, set it totrue. once you’re done looping, if it’s stillfalse, no files were modified in past 24 hours