Jump to content
Sign in to follow this  
Spikeedoodles

Making a Statement Run Once Every Few Hours

Recommended Posts

Spikeedoodles

Hey all,

So I'm making a quick and dirty monitoring software that will e-mail me every 2 hours (all it's doing is grabbing some network traffic information).  My question is, since I want to send this email once every 2 or so hours (with an attached log) how could I make it so it doesn't spam my email when the time comes.  Here is a little tidbit of what I currently have

If @Min = 15 Then
Call ("emailMe")
EndFunc

Every tie the clock hits minute 15 i get utterly spammed with emails because the statement is true.  How could I make it where the statement is almost getting "Turned Off" until the statement is no longer true, so in this case, it will only send me an email once per hour?

Share this post


Link to post
Share on other sites
MikahS

so you want the call statement to go every 2 hours? or every hour on the 15 tick?


Snips & Scripts


My Snips: graphCPUTemp ~ getENVvars
My Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4

Feel free to use any of my code for your own use.                                                                                                                                                           Forum FAQ

 

Share this post


Link to post
Share on other sites
Spikeedoodles

so you want the call statement to go every 2 hours? or every hour on the 15 tick?

It doesn't really matter too much, all I need to know is how to only make it run once instead of every time the statement is true.  Right now, the program is:

Checking if the statement is true (lets say it is)

sends me an email

Checking if the statement is true (lets say it is)

sends me an email

Checking if the statement is true (lets say it is)

sends me an email

Checking if the statement is true (lets say it is)

sends me an email

 
this is happening in the matter of seconds, so I'm getting email spammed by my program.  I only want it to check if the statement is true once then almost turning off the statement until it isnt true anymore, so in that case it will:
 

Checking if the statement is true (lets say it is)

sends me an email

TURNS OFF STATEMENT

Checking if the statement is true (lets say it is)

Doesnt send email because the statement says to not send anymore emails

Checking if the statement is true (lets say it is)

Doesnt send email because the statement says to not send anymore emails

Checking if the statement is true (lets say it is)

Doesnt send email because the statement says to not send anymore emails

Checking if the statement is true (lets say it is)

Doesnt send email because the statement says to not send anymore emails

The minute changes

The statement is turned back on

repeat this

 

I know "turning off" isnt the right term, but that is sort of what I'm looking for.

Share this post


Link to post
Share on other sites
water

; Wait until it is 15 minutes past the hour
While 1
    If @Min = 15 Then ExitLoop
    Sleep(60 * 1000) ; wait a minute
WEnd
; Create mail every hour
While 1
    ; create mail here
    Sleep(60 * 60 * 1000) ; Wait an hour
WEnd


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (2018-06-01 - Version 1.4.9.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2018-09-01 - Version 1.3.4.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
 
Tutorials:

ADO - Wiki

 

Share this post


Link to post
Share on other sites
Spikeedoodles
; Wait until it is 15 minutes past the hour
While 1
    If @Min = 15 Then ExitLoop
    Sleep(60 * 1000) ; wait a minute
WEnd
; Create mail every hour
While 1
    ; create mail here
    Sleep(60 * 60 * 1000) ; Wait an hour
WEnd

Thanks for your help, I should have been more specific.

Sleep wouldn't quite work because the script itself still needs to be running (I still want to log traffic, if it's sleeping I can;t do that).

Errmmm..  Perhaps just making a separate script would be easier.

Share this post


Link to post
Share on other sites
MikahS

why not just

$time = 3600000 ;<--- 1 hour
 
AdlibRegister("fTime", $time)
 
While 1
WEnd

Func fTime()
    Call("emailMe")
EndFunc

Edit: this will run the function every hour and not make the script stop for any reason.

Edited by MikahS

Snips & Scripts


My Snips: graphCPUTemp ~ getENVvars
My Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4

Feel free to use any of my code for your own use.                                                                                                                                                           Forum FAQ

 

Share this post


Link to post
Share on other sites
Spikeedoodles

why not just

$time = 3600000 ;<--- 1 hour
 
AdlibRegister("fTime", $time)
 
While 1
WEnd

Func fTime()
    Call("emailMe")
EndFunc

Edit: this will run the function every hour.

Ohhhhhh, never heard of AdblibRegister.  I will look into that.  Thanks!

Share this post


Link to post
Share on other sites
MikahS

All

AdlibRegister

does is call a function every x milliseconds; essentially with an empty while loop this script will run indefinitely while calling

fTime()

every 1 hour.

Edited by MikahS

Snips & Scripts


My Snips: graphCPUTemp ~ getENVvars
My Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4

Feel free to use any of my code for your own use.                                                                                                                                                           Forum FAQ

 

Share this post


Link to post
Share on other sites
JLogan3o13

Or simply create your script and use Windows' built in scheduler rather than reinventing the wheel.


√-1 2^3 ∑ π, and it was delicious!

Share this post


Link to post
Share on other sites
guinness

 

All

AdlibRegister
does it call a function every x milliseconds; essentially with an empty while loop this script will run indefinitely while calling
fTime()
every 1 hour.

 

That would have been my choice.


UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Share this post


Link to post
Share on other sites
water

Mine too ;)


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (2018-06-01 - Version 1.4.9.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2018-09-01 - Version 1.3.4.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
 
Tutorials:

ADO - Wiki

 

Share this post


Link to post
Share on other sites
Spikeedoodles

The adlibregister seems to work great for my purposes!  Thanks everyone!

Share this post


Link to post
Share on other sites
MikahS

@Spikeedoodles glad to help :)


Snips & Scripts


My Snips: graphCPUTemp ~ getENVvars
My Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4

Feel free to use any of my code for your own use.                                                                                                                                                           Forum FAQ

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×