Solved

Loop within a loop

Posted on 2008-09-29
1
285 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
Comment Utility
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

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

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…
Enums (shorthand for ‘enumerations’) are not often used by programmers but they can be quite valuable when they are.  What are they? An Enum is just a type of variable like a string or an Integer, but in this case one that you create that contains…
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…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…

763 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

16 Experts available now in Live!

Get 1:1 Help Now