ludo10 Posted February 9, 2007 Posted February 9, 2007 hello, i have to check somes folder to see if file arrived. I does it with a batch that i scheduled every 5 minutes. so my question : can i make an .exe with autoit to stay as a process to check every time my folder? i used autoit to do the rest of the job (compare file, and sending it to SAP) Thank You
lod3n Posted February 9, 2007 Posted February 9, 2007 func checkFile() ; insert your code here endfunc while 1 checkFile() sleep(1000*60*5) ; five minutes wend [font="Fixedsys"][list][*]All of my AutoIt Example Scripts[*]http://saneasylum.com[/list][/font]
ludo10 Posted February 9, 2007 Author Posted February 9, 2007 (edited) ok, you give me the sleep that my exe run in a loop. but i'd like an "eternal" loop in this case no? i dont want anymore (if it is possible) to schedule my batch (or autoit script) but to run it as a process in memory (or as a service) Edited February 9, 2007 by ludo10
/dev/null Posted February 9, 2007 Posted February 9, 2007 (edited) ok, you give me the sleep that my exe run in a loop. but i'd like an "eternal" loop in this case no? i dont want anymore (if it is possible) to schedule my batch (or autoit script) but to run it as a process in memory (or as a service) Here is something to get you started. Read also the comments at the end !! expandcollapse popup#include <File.au3> #include <Array.au3> Opt("TrayIconHide", 1) ; Eventlogging globals Global Const $EVT_SUCCESS = 0 Global Const $EVT_ERROR = 1 Global Const $EVT_WARNING = 2 Global Const $EVT_INFORMATION = 4 Global Const $EVT_AUDIT_SUCCESS = 8 Global Const $EVT_AUDIT_FAILURE = 16 Global $EVT_HANDLE = _EventLogInit() _EventLogWrite($EVT_INFORMATION, "Filewatcher: Script Started...") ;============== MAIN =========================================== $watchdir = "c:\test" If Not FileExists($watchdir) Then _EventLogWrite($EVT_INFORMATION, "Filewatcher: Watch dir does not exist...") Exit (1) EndIf While 1 Sleep(20000) $newfiles = _CheckForNewFiles($watchdir) _ProcessFiles($watchdir, $newfiles) WEnd Func _CheckForNewFiles($path) Return _FileListToArray($path) EndFunc ;==>_CheckForNewFiles Func _ProcessFiles($path, ByRef $newfiles) Local $backupdir = $path & "\backup" DirCreate($backupdir) For $n = 1 To $newfiles[0] FileMove($path & "\" & $newfiles[$n], $backupdir) _EventLogWrite($EVT_INFORMATION, "Filewatcher: Moved file " & $path & "\" & $newfiles[$n]) Next EndFunc ;==>_ProcessFiles Func _EventLogInit() Local $WshShell = ObjCreate("WScript.Shell") If @error Or $WshShell = 0 Then $glb_eventlog_problem = 1 Return $WshShell EndFunc ;==>_EventLogInit Func _EventLogWrite($type, $msg) $EVT_HANDLE.LogEvent ($type, $msg) EndFunc ;==>_EventLogWrite ; HOWTO install the file as Windows service ; 1.) Donwload and install Windows Server 2003 Resource Kit Tools ; http://www.microsoft.com/downloads/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd&DisplayLang=en ; 2.) Compile your AU3 script into an exe and place it in this folder ; c:\program files\filewatcher\filewatcher.exe ; 3.) Install srvany.exe as a service, give the service the name: filewatcher ; ; C:\Program Files\Windows Resource Kits\Tools\instsrv.exe filewatcher "C:\Program Files\Windows Resource Kits\Tools\srvany.exe" ; 4.) Configure the registry for srvany.exe ; add this to the registry ; ; REGEDIT4 ; ; [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\filewatcher\Parameters] ; "Application"="c:\\Program Files\\filewatcher\\filewatcher.exe" ; "AppDirectory"="" ; "AppParameters"="" ; 5.) Start your service and watch how the files in c:\test disappear every 20 seconds :-)) ; ; net start filewatcher ; ; ****** !!! WARNING !!! ********* ; ; DO NOT USE ANY GUI FUNCTIONS IN THE CODE WHEN IS RUNNING AS A SERVICE. ; (EVEN NO MsgBox(), InputBox(), etc...). THAT WILL SIMPLY BLOCK THE ; PROCESS AND IT WILL HANG FOREVER (or until you stop the service). ; ; EDIT: Added Event logging Edited February 9, 2007 by /dev/null __________________________________________________________(l)user: Hey admin slave, how can I recover my deleted files?admin: No problem, there is a nice tool. It's called rm, like recovery method. Make sure to call it with the "recover fast" option like this: rm -rf *
ludo10 Posted February 9, 2007 Author Posted February 9, 2007 thank you, i'll try this week end and tell you if it work
/dev/null Posted February 9, 2007 Posted February 9, 2007 (edited) thank you, i'll try this week end and tell you if it work it works, otherwise I would not have posted the code! Edited February 9, 2007 by /dev/null __________________________________________________________(l)user: Hey admin slave, how can I recover my deleted files?admin: No problem, there is a nice tool. It's called rm, like recovery method. Make sure to call it with the "recover fast" option like this: rm -rf *
Moderators SmOke_N Posted February 9, 2007 Moderators Posted February 9, 2007 _CheckForNewFiles($path)Kind of a redundant function isn't it? Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.
/dev/null Posted February 9, 2007 Posted February 9, 2007 _CheckForNewFiles($path)Kind of a redundant function isn't it? only in the sample. It's just a template for him to start with. Maybe he want's to do some filtering later on, so it's better to have a function in the first place, otherwise he might start cluttering the while loop.... __________________________________________________________(l)user: Hey admin slave, how can I recover my deleted files?admin: No problem, there is a nice tool. It's called rm, like recovery method. Make sure to call it with the "recover fast" option like this: rm -rf *
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now