• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 307
  • Last Modified:

Loop within a loop

I have the following script that checks a folder every 10 minutes and then emails us if the folder has more than 500 files.

What I want to do is embed another loop that checks again to see if there are less that 200 files.

The idea being, it sends us an email if there are more than 500 files, but then won't send us any more emails until the file count has dropped below 200 and then raised back above 500 again.

Can anyone help me?


Andrew
strComputer = "lang-apps"
 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
 
Do While True
    Set colFileList = objWMIService.ExecQuery _
        ("ASSOCIATORS OF {Win32_Directory.Name='D:\Mandata\WebInterface\Exports'} Where " _
            & "ResultClass = CIM_DataFile")
 
    		If colFileList.Count >= 500 Then
 
			Set objEmail = CreateObject("CDO.Message")
			objEmail.From = "WEB_INTERFACE"
			objEmail.To = "it@xxxx.co.uk"
			objEmail.Subject = "WEB INTERFACE"
			objEmail.Textbody = "There are " & colFileList.Count & " items in the Exports folder on Lang-Apps!       \\lang-apps\Mandata\WebInterface\Exports"
			objEmail.Configuration.Fields.Item _
			 ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
			objEmail.Configuration.Fields.Item _
			 ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
			"192.168.73.112"
			objEmail.Configuration.Fields.Item _
			 ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
			objEmail.Configuration.Fields.Update
			objEmail.Send
 
    		End If
 
    Wscript.Sleep 600000
 
Loop

Open in new window

0
spen_lang
Asked:
spen_lang
1 Solution
 
Luis PérezSoftware Architect in .NetCommented:
Not so difficult. Simply control the state of the sent email via a switch variable. The switch represents if an e-mail has sent, and logically initializes to False. When reached the 500 files, the e-mail is sent and the switch switches to true. If in another loop iteration there are 500 or more files yet, it don't send the e-mail because the switch variable is set to True. The switch only will become false when there are 200 or less files.
strComputer = "lang-apps"
 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
 
bSwitchEmail = False 
Do While True
    Set colFileList = objWMIService.ExecQuery _
        ("ASSOCIATORS OF {Win32_Directory.Name='D:\Mandata\WebInterface\Exports'} Where " _
            & "ResultClass = CIM_DataFile")
                If (colFileList.Count < 200) And (bSwitchEmail = True) Then
                        bSwitchEmail = False
                ElseIf colFileList.Count >= 500 Then
                        If bSwitchEmail = False Then
                                Set objEmail = CreateObject("CDO.Message")
                                objEmail.From = "WEB_INTERFACE"
                                objEmail.To = "it@xxxx.co.uk"
                                objEmail.Subject = "WEB INTERFACE"
                                objEmail.Textbody = "There are " & colFileList.Count & " items in the Exports folder on Lang-Apps!       \\lang-apps\Mandata\WebInterface\Exports"
                                objEmail.Configuration.Fields.Item _
                                 ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
                                objEmail.Configuration.Fields.Item _
                                 ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
                                "192.168.73.112"
                                objEmail.Configuration.Fields.Item _
                                 ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
                                objEmail.Configuration.Fields.Update
                                objEmail.Send
                                bSwitchEmail = True
                        End If
                End If
 
    Wscript.Sleep 600000
 
Loop

Open in new window

0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now