Solved

Loop within a loop

Posted on 2008-09-29
1
290 Views
Last Modified: 2013-11-25
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
Comment
Question by:spen_lang
1 Comment
 
LVL 25

Accepted Solution

by:
Luis Pérez earned 250 total points
ID: 22596085
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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction I needed to skip over some file processing within a For...Next loop in some old production code and wished that VB (classic) had a statement that would drop down to the end of the current iteration, bypassing the statements that were c…
If you have ever used Microsoft Word then you know that it has a good spell checker and it may have occurred to you that the ability to check spelling might be a nice piece of functionality to add to certain applications of yours. Well the code that…
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…

948 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now