laurin1 Posted February 9, 2008 Posted February 9, 2008 I have a problem where I run several of the same script at once, and I need to tell the difference between them programmatically. Is there a way to rename the .exe that is running, or maybe have one main script generating and compile "child" scripts? Any other ideas I'd be open to as well. Keith Davis MCSA, ZCE, A+, N+ http://www.laurinkeithdavis.com
Xenobiologist Posted February 9, 2008 Posted February 9, 2008 I have a problem where I run several of the same script at once, and I need to tell the difference between them programmatically. Is there a way to rename the .exe that is running, or maybe have one main script generating and compile "child" scripts? Any other ideas I'd be open to as well.Just put a func in your script that looks whether there is a process with the scriptname and then count them and add 1 to it and show the counter in the title of your GUI.Mega Scripts & functions Organize Includes Let Scite organize the include files Yahtzee The game "Yahtzee" (Kniffel, DiceLion) LoginWrapper Secure scripts by adding a query (authentication) _RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...) Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc. MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times
laurin1 Posted February 9, 2008 Author Posted February 9, 2008 Just put a func in your script that looks whether there is a process with the scriptname and then count them and add 1 to it and show the counter in the title of your GUI.MegaThis doens't use a GUI, it's a bunch of scripted automated backups. I would really rather find a way to name the .exe, so even visually, I can see which is which (in case i have to terminate them manually, I can tell which one I'm looking at.) However, your idea might help. Keith Davis MCSA, ZCE, A+, N+ http://www.laurinkeithdavis.com
Xenobiologist Posted February 9, 2008 Posted February 9, 2008 This doens't use a GUI, it's a bunch of scripted automated backups. I would really rather find a way to name the .exe, so even visually, I can see which is which (in case i have to terminate them manually, I can tell which one I'm looking at.) However, your idea might help.Hmmh do not get it. One main script starts one other script over and over again --> multiple times? Right?Then start bla_1.exe next one rename to bla_2.exe (FileMove)and so on. Mega Scripts & functions Organize Includes Let Scite organize the include files Yahtzee The game "Yahtzee" (Kniffel, DiceLion) LoginWrapper Secure scripts by adding a query (authentication) _RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...) Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc. MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times
laurin1 Posted February 9, 2008 Author Posted February 9, 2008 Hmmh do not get it. One main script starts one other script over and over again --> multiple times? Right?Then start bla_1.exe next one rename to bla_2.exe (FileMove)and so on. MegaSorry, no, I use VisualCron to start the same script over and over again, using different Command Line arguments. Each instance is in affect a different backup job. Keith Davis MCSA, ZCE, A+, N+ http://www.laurinkeithdavis.com
Xenobiologist Posted February 9, 2008 Posted February 9, 2008 Sorry, no, I use VisualCron to start the same script over and over again, using different Command Line arguments. Each instance is in affect a different backup job.Sorry, I cannot get want you need. Maybe you can determine the scripts by PID Scripts & functions Organize Includes Let Scite organize the include files Yahtzee The game "Yahtzee" (Kniffel, DiceLion) LoginWrapper Secure scripts by adding a query (authentication) _RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...) Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc. MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times
simusphere Posted February 9, 2008 Posted February 9, 2008 I have a problem where I run several of the same script at once, and I need to tell the difference between them programmatically. Is there a way to rename the .exe that is running, or maybe have one main script generating and compile "child" scripts? Any other ideas I'd be open to as well.Cannot really answer this question directly but why not explain the goal of what you are trying to accomplish with the script. If you are using the same script over and over with different command line args then that sounds like a perfect case for a function to me. It would be helplful to include an example of your script so we can all get on the same page with your line of reasoning for your question.
Achilles Posted February 9, 2008 Posted February 9, 2008 Not sure if this will work... but: In the script include part at the top that renames the exe your run with VisualCron to name*index*.exe (like program1.exe)... But determine that name by checking if other processes exist. Like have it check if program1.exe exists and if doesn't rename the program to that, and if it does exist check program2.exe... etc. Once you a file renamed that is going to be different then any other one, run the script and the exit yours. However, use $cmdLine to tell the new script that it doesn't need to check the proccesses like it did in the first paragraph I described. If you don't know about $cmdLine or whatever it's called ask and I'll explain more, or somebody else. Also, ask if what I said didn't make sense, it sounds complicated. My Programs[list][*]Knight Media Player[*]Multiple Desktops[*]Daily Comics[*]Journal[/list]
rover Posted February 10, 2008 Posted February 10, 2008 (edited) Edit: I've 'fleshed out' this suggestion a bit better If you know this next bit already, read on. Then it's strictly for others who come along and don't know this. Every AutoIt script has a hidden GUI window even if it has no GUI elements. Even CUI compiled scripts with the new wrapper option for commandline scripts still have the hidden GUI window titled 'AutoIt v3' These commands allow reading and re-titling the hidden window AutoItWinGetTitle() AutoItWinSetTitle("script001") you could set the title of the hidden window 'AutoIt v3' to a number for each iteration of the script or title it with the commandline parameters the script was passed and use a script like the one below to view each script window and enter the pid to close the script testscript.au3 - compile to exe and pass command line parameters expandcollapse popup#NoTrayIcon Opt("TrayIconHide", 1) Func OnAutoItStart() ; use first 2 parameters for script title name and description or number If IsArray($CmdLine) And $CmdLine[0] Then AutoItWinSetTitle($CmdLine[1]&$CmdLine[2]) EndIf EndFunc While 1 Sleep(5000) WEnd Func OnAutoItExit(); allows polite script shutdown ; chance to do cleanup on script closure ; add cleanup code here Beep(1000,5) ; audible indication of proper script shutdown EndFuncoÝ÷ Ùè¢iÙbêZ©µêìµë-±Êâ¦×±x쵩eÓMmzËlr¸©µì^"{-jYtÓk^²Û®*m{ËZ]4Ýëµë-±Êâ¦×±x쵩eÚz׬¶Ç+^Åâ'²Ö¥X«yú1µë-±Êâ¦×±x쵩e ë-¢gr»§)à±Êâ¦Û'£Z½èbu×§ëh"Ü"Ú0Â+aiº/zØëHËZP¡··ö÷ô쵩eÓMwöÇ+^é«^±©e®éçx'¢x.uéìr¸©¶Ì"¶ý"{-jYqÇqߨ§ëh"Ü"Ú0¶+ezv¦xGb¶ö«¬~,^±©Ý~(!¶)àÂ+a~îçb¶ðØOƬ²ý±Æ¥¶@Ųèi¹^~ïßo5¢·®X®êåoÝ÷ Û»¢Ø§²ÂjY[iÉ,º+ZnW¢»÷Û]4jwn¥«¢+Ù=ÁÐ ÅÕ½Ðí5ÕÍѱÉYÉÌÅÕ½Ðì°Ä¤(¥¹±Õ±ÐíAɽÍ̹ÔÌÐì)1½°ÀÌØí±¥ÍаÀÌØí¹µ°ÀÌØí¤ÄôÀ°ÀÌØí¤ÈôİÀÌØíÍQ¥Ñ±°ÀÌØí¡¹±)1½°ÀÌØíMÉ¥Á]¥¹9µ°ÀÌØíA%°ÀÌØíÍ¥é°ÀÌØí ½Õ¹Ñ1¥¹Ì°ÀÌØíµÍ)±½°ÀÌØíÉÉålÅulÅt((ì¹ÑÈÁÉ¥àѥѱÕͽÈÍÉ¥ÁÑ̽µµ¹±¥¹(ÀÌØíMÉ¥Á]¥¹9µô%¹ÁÕÑ ½à ÅÕ½ÐíIÕ¹¹¥¹MÉ¥ÁйյÉÑ¥½¸ÅÕ½Ðì°|($$ÅÕ½Ðí¹ÑÈѥѱ¹µÁÉ¥à½ÈÉÕ¹¹¥¹ÍÉ¥ÁÑÌÅÕ½Ðì°ÅÕ½Ðí%¹Íѱ°ÅÕ½Ðì°ÅÕ½ÐìÅÕ½Ðì°ÌÀÀ°ÄÀÀ¤((ì Éѱ±¬Õ¹Ñ¥½¸(ÀÌØí¡¹±ô±± ±±I¥ÍÑÈ ÅÕ½Ðí}¹Õµ]¥¹½ÝÍAɽÅÕ½Ðì°ÅÕ½Ðí¥¹ÐÅÕ½Ðì°ÅÕ½Ðí¡Ý¹íÁÑÈÅÕ½Ðì¤()]¡¥±Ä($ÀÌØíµÍôU%Ñ5Í ¤(%%ÀÌØíµÍô´ÌQ¡¸á¥Ð(%%9½Ð]¥¹á¥ÍÑÌ ÅÕ½Ðí¹ÑÈA%Ѽ±½ÍÅÕ½Ðì°ÅÕ½ÐìÅÕ½Ðì¤Q¡¸($$ÀÌØí¤ÄôÀ($$ÀÌØí¤ÈôÄ($%¥´ÀÌØíÉÉålÅulÅt($$($$ì ±°¹Õµ]¥¹½ÝÌ($%±± ±° ÅÕ½ÐíÕÍÈÌȹ±°ÅÕ½Ðì°ÅÕ½Ðí¥¹ÐÅÕ½Ðì°ÅÕ½Ðí¹Õµ]¥¹½ÝÌÅÕ½Ðì°|($$$$ÅÕ½ÐíÁÑÈÅÕ½Ðì°±± ±±ÑAÑÈ ÀÌØí¡¹±¤°ÅÕ½Ðí±ÁÉ´ÅÕ½Ðì°ÄÀ¤($$($%%9½ÐMÑÉ¥¹1¸ ÀÌØí±¥ÍФQ¡¸($$%5Í ½à À°ÅÕ½ÐíIÕ¹¹¥¹MÉ¥ÁйյÉÑ¥½¸ÅÕ½Ðì°|($$$$$ÅÕ½Ðí9¼ÉÕ¹¹¥¹ÍÉ¥ÁÑÌÝ¥Ñ ÌäìÅÕ½ÐìµÀìÀÌØíMÉ¥Á]¥¹9µµÀìÅÕ½ÐìÌäìѥѱ½Õ¹ÅÕ½Ðì¤($$%á¥Ð($%¹%($$($%%ÀÌØíÉÉålÁulÁtÐìÌQ¡¸($$$ÀÌØíÍ¥éôÄÔÀ¬ ÀÌØíÉÉålÁulÁt´Ì¤¨ÄÔ¤($%±Í($$$ÀÌØíÍ¥éôÄÔÀ($%¹%(($$ÀÌØíA%ô%¹ÁÕÑ ½à ÅÕ½Ðí¹ÑÈA%Ѽ±½ÍÍÉ¥ÁÐÅÕ½Ðì°ÀÌØí±¥ÍаÅÕ½ÐìÅÕ½Ðì°ÅÕ½ÐìÅÕ½Ðì°ÜÀÀ°ÀÌØíÍ¥é¤($%%9½ÐMÑÉ¥¹1¸ ÀÌØíA%¤Q¡¸á¥Ðì±¥¬½¬ÕÑѽ¸Ý¥Ñ ¹¼¥¹ÁÕÐÑÍÐ($%½ÈÀÌØí¤ÌôÄQ¼ÀÌØíÉÉålÁulÁt($$%%ÀÌØíÉÉålÀÌØí¤ÍulÅtôÀÌØíA%Q¡¸($$$%]¥¹ ±½Í ÀÌØíÉÉålÀÌØí¤ÍulÁt°ÅÕ½ÐìÅÕ½Ðì¤($$$$ÀÌØíÍQ¥Ñ±ôÀÌØíÉÉålÀÌØí¤ÍulÁt($$%¹%($%9áÐ($%]¥¹]¥Ñ ±½Í ÀÌØíÍQ¥Ñ±°ÅÕ½ÐìÅÕ½Ðì°È¤($$ÀÌØíÍQ¥Ñ±ôÅÕ½ÐìÅÕ½Ðì($$ÀÌØí±¥ÍÐôÅÕ½ÐìÅÕ½Ðì(%¹%)]¹((ì ±±¬AɽÕÉ)Õ¹}¹Õµ]¥¹½ÝÍAɽ ÀÌØí¡]¹°ÀÌØí±AÉ´¤($ÀÌØí¡]¹ô!]¹ ÀÌØí¡]¹¤(%1½°ÀÌØíÍÑA%ô±±MÑÉÕÑ ÉÑ ÅÕ½Ðí¥¹ÐÅÕ½Ðì¤(%1½°ÀÌØíѥѱô]¥¹ÑQ¥Ñ± ÀÌØí¡]¹¤(%1½°ÀÌØíA%(%%MÑÉ¥¹%¹MÑÈ ÀÌØíѥѱ°ÀÌØíMÉ¥Á]¥¹9µ°Ä¤Q¡¸($$íÐÑ¡Á¥É½´Ñ¡Ý¥¹½ÜÁɽ٥($%±± ±° ÅÕ½ÐíÕÍÈÌȹ±°ÅÕ½Ðì°ÅÕ½Ðí¥¹ÐÅÕ½Ðì°ÅÕ½ÐíÑ]¥¹½ÝQ¡ÉAɽÍÍ%ÅÕ½Ðì°|($$$$ÅÕ½Ðí¡Ý¹ÅÕ½Ðì°ÀÌØí¡]¹°ÅÕ½ÐíÁÑÈÅÕ½Ðì°±±MÑÉÕÑÑAÑÈ ÀÌØíÍÑA%¤¤($%%ÉɽÈQ¡¸IÑÕɸMÑÉÉ½È È°À°À¤($$ÀÌØíA%ô±±MÑÉÕÑÑÑ ÀÌØíÍÑA%°Ä¤($%%ÉɽÈQ¡¸IÑÕɸMÑÉÉ½È È°À°À¤($$($$ÀÌØí¤Ä¬ôÄ($$ÀÌØí¤Èô9½ÐÀÌØí¤È($%I¥´ÀÌØíÉÉålÀÌØí¤Ä¬ÅulÀÌØí¤Ä¬Åt($$ÀÌØíÉÉålÀÌØí¤ÅulÀÌØí¤ÉtôÀÌØíѥѱ($$ÀÌØí¤Èô9½ÐÀÌØí¤È($$ÀÌØíÉÉålÀÌØí¤ÅulÀÌØí¤ÉtôÀÌØíA%($$ÀÌØíÉÉålÁulÁtôÀÌØí¤Ä($$($$ìÀÌØí¹µô}AɽÍÍÑ9µ ÀÌØíÁ¥¤($$ÀÌØí¹µô}ÑAɽÍÍAÑ ÀÌØíA%¤($$ÀÌØí±¥ÍеÀìôÅÕ½ÐíQ¥Ñ±èÅÕ½ÐìµÀìÀÌØíѥѱµÀìQµÀìÅÕ½ÐíA%èÅÕ½ÐìµÀì|($$$$ÀÌØíA%µÀìQµÀìÅÕ½Ðí¡]¹èÅÕ½ÐìµÀìÀÌØí¡]¹µÀìQµÀìÅÕ½ÐíAɽÍÌèÅÕ½ÐìµÀìÀÌØí¹µµÀì I1($% ½¹Í½±]É¥Ñ ÅÕ½Ðì´ÐíQ¥Ñ±è´ÐìÅÕ½ÐìµÀìÀÌØíѥѱµÀìÅÕ½Ðì¡]¹è´ÐìÅÕ½ÐìµÀì|($$$$ÀÌØí¡]¹µÀìÅÕ½ÐìA%è´ÐìÅÕ½ÐìµÀìÀÌØíA%µÀìQµÀìÅÕ½ÐíAɽÍÌè´ÐìÅÕ½ÐìµÀìÀÌØí¹µµÀì I1¤(%¹%(%IÑÕɸÄ)¹Õ¹ìôôÐí}¹Õµ]¥¹½ÝÍAɽ()Õ¹=¹Õѽ%Ñá¥Ð ¤($ì±Ñ±±¬Õ¹Ñ¥½¸(%±± ±±É ÀÌØí¡¹±¤)¹Õ¹ìôôÐí=¹Õѽ%Ñá¥Ð()Õ¹}ÑAɽÍÍAÑ ÀÌØíA%Ȥ($ì}ÑAɽÍÍAÑ Ù¥Á½ÍÐäµ±½É½´µÉµ¸±é½ÁɽÍ͵¹È(%1½°ÀÌØíAɽḬ́ÀÌØí5½Õ±Ì°ÀÌØíIÐ(% ½¹ÍÐÀÌØíAI= MM}EUIe}%9=I5Q%=8ôÁàÀÐÀÀ(% ½¹ÍÐÀÌØíAI= MM}Y5}IôÁàÀÀÄÀ($ÀÌØíAɽÍÌô±± ±° ÅÕ½Ðíɹ°Ìȹ±°ÅÕ½Ðì°ÅÕ½Ðí¡Ý¹ÅÕ½Ðì°ÅÕ½Ðí=Á¹AɽÍÌÅÕ½Ðì°ÅÕ½Ðí¥¹ÐÅÕ½Ðì°|($$% ¥Ñ=H ÀÌØíAI= MM}EUIe}%9=I5Q%=8°ÀÌØíAI= MM}Y5}I¤°|($$$ÅÕ½Ðí¥¹ÐÅÕ½Ðì°À°ÅÕ½Ðí¥¹ÐÅÕ½Ðì°ÀÌØíA%Ȥ(%%ÀÌØíAɽÍÍlÁtôÀQ¡¸IÑÕɸMÑÉÉ½È Ä¤($ÀÌØí5½Õ±Ìô±±MÑÉÕÑ ÉÑ ÅÕ½Ðí¥¹ÑlÄÀÈÑtÅÕ½Ðì¤(%±± ±° ÅÕ½ÐíÁÍÁ¤¹±°ÅÕ½Ðì°ÅÕ½Ðí¥¹ÐÅÕ½Ðì°ÅÕ½Ðí¹ÕµAɽÍÍ5½Õ±ÌÅÕ½Ðì°ÅÕ½Ðí¡Ý¹ÅÕ½Ðì°|($$$ÀÌØíAɽÍÍlÁt°ÅÕ½ÐíÁÑÈÅÕ½Ðì°±±MÑÉÕÑÑAÑÈ ÀÌØí5½Õ±Ì¤°|($$$ÅÕ½Ðí¥¹ÐÅÕ½Ðì°±±MÑÉÕÑÑM¥é ÀÌØí5½Õ±Ì¤°ÅÕ½Ðí¥¹Ñ}ÁÑÈÅÕ½Ðì°À¤($ÀÌØíIÐô±± ±° ÅÕ½ÐíÁÍÁ¤¹±°ÅÕ½Ðì°ÅÕ½Ðí¥¹ÐÅÕ½Ðì°ÅÕ½ÐíÑ5½Õ±¥±9µàÅÕ½Ðì°ÅÕ½Ðí¡Ý¹ÅÕ½Ðì°|($$$ÀÌØíAɽÍÍlÁt°ÅÕ½Ðí¥¹ÐÅÕ½Ðì°±±MÑÉÕÑÑÑ ÀÌØí5½Õ±Ì°Ä¤°|($$$ÅÕ½ÐíÍÑÈÅÕ½Ðì°ÅÕ½ÐìÅÕ½Ðì°ÅÕ½Ðí¥¹ÐÅÕ½Ðì°ÈÀÐà¤($ÀÌØí5½Õ±ÌôÀ(%%MÑÉ¥¹1¸ ÀÌØíIÑlÍt¤ôÀQ¡¸IÑÕɸMÑÉÉ½È Ä¤(%IÑÕɸÀÌØíIÑlÍt)¹Õ¹ìôôÐí}ÑAɽÍÍAÑ Edited February 10, 2008 by rover I see fascists...
Squirrely1 Posted February 10, 2008 Posted February 10, 2008 Sorry, no, I use VisualCron to start the same script over and over again, using different Command Line arguments. Each instance is in affect a different backup job.It seems like what you want to do is to be able look at a tray menu item for each backup job, since you don't want to use a GUI. This function is described in the Help file: TrayCreateItem ( text [, menuID [, menuentry [, menuradioitem]]] ) Use this function to display the name or path of the folder being backed up, this way: TrayCreateItem($FolderBeingBackedUp) Das Häschen benutzt Radar
BrettF Posted February 10, 2008 Posted February 10, 2008 Rover's example is the best and easiest. Vist my blog!UDFs: Opens The Default Mail Client | _LoginBox | Convert Reg to AU3 | BASS.au3 (BASS.dll) (Includes various BASS Libraries) | MultiLang.au3 (Multi-Language GUIs!)Example Scripts: Computer Info Telnet Server | "Secure" HTTP Server (Based on Manadar's Server)Software: AAMP- Advanced AutoIt Media Player | WorldCam | AYTU - Youtube Uploader Tutorials: Learning to Script with AutoIt V3Projects (Hardware + AutoIt): ArduinoUseful Links: AutoIt 1-2-3 | The AutoIt Downloads Section: | SciTE4AutoIt3 Full Version!
simusphere Posted February 10, 2008 Posted February 10, 2008 Every AutoIt script has a hidden GUI window even if it has no GUI elements.Even CUI compiled scripts with the new wrapper option for commandline scriptsstill have the hidden GUI window titled 'AutoIt v3'I didn't know that. Very good Rover.
laurin1 Posted February 10, 2008 Author Posted February 10, 2008 I apologize for not giving more info, as we've veared off a bit, but this is all good information that will come in handy, so not wasted. I was unaware of that hidden window, so this much easier than I thought. Here's what I do: From VisualCron, I call Backup.exe with a command line argument, for example "Backup.exe 'Full Daily Differential to File'". Backup.exe runs ntbackup.exe with various command line arguments, based on an .ini file. What I need to be able to do is if these jobs overlap, which from time to time they will do, I need to be able to check verify 1 that the current "version" with that particular command line argument is not the one running (two of the same "jobs" running at the same time is a real problem), I need to be able to monitor that that particular one is running, and I need to monitor the ntbackup.exe instance so that I know that it is still running. I figured out the last part yesterday, in that I can copy and rename ntbackup.exe before I run it as what 'Full Daily Differential to File.exe', or whatver I want and then monitor that instance as a process. I can read through your suggestions (rover) to check the other piece, or if you don't mind clarify how that might work in this situation, that would be great. Keith Davis MCSA, ZCE, A+, N+ http://www.laurinkeithdavis.com
rover Posted February 10, 2008 Posted February 10, 2008 (edited) what do you mean by: 'current "version" with that particular command line argument is not the one running' by "version", do you mean an instance of backup.exe run with 'Full Daily Differential to File' as the commandline argument? thats what the monitoring script I posted and Hubertus' WMI code will show. they both display the commandline parameters the instance of backup.exe was run with and the PID's for each instance so you can see if there are any duplicates close in Taskmanager or ProcessExplorer or use the monitoring script I uploaded to close duplicates (best to WinClose instead of ProcessClose a script) (I think what you need is _Singleton()) you know if that particular commandline is what the backup.exe script is running because thats what it's title is named as displayed in that monitoring script or in the script by Hubertus that shows the command line the script was run with I refrained from posting an WMI script as there are compatability and permission issues and some people prefer an API all AutoIt solution, though the WMI scripting is better for some functions. the Win32_Process class has a lot of info, particularly that commandline object _Singleton(): to prevent two instances of the same script running with the same command line parameters you could use the _Singleton() function to create a 'Mutex' of those commandline parameters and close any second instance of the script instantly when it is run. If you only need to prevent script duplicates of backup.exe, then just use _Singleton("backup") in your scripts excuse this if it seems pedantic but others read these posts and the clearer they are, the more people learn (for those still learning like me) Use the built in function 'OnAutoItStart()' this function, if present in the script is the very first thing run by AutoIt, regardless of it's placement location in the script even before declared variables at the top of the script. its the best place for _Singleton() and other functions required prior to script startup its counterpart is OnAutoItExit(), the last function run automatically by AutoIt on exit these functions are not called by you in the script, AutoIt uses these on start and exit automatically if they are present I can read through your suggestions (rover) to check the other piece, or if you don't mind clarify how that might work in this situation, that would be great.The monitoring script is started and you enter in the inputbox the fixed name of the script running you want to monitor e.g. 'Backup' - NOTE: Case Sensitive!, same name as the script executable minus the '.exe' or hard code the monitoring script to monitor 'Backup' and dump the inputbox, its just a demo script... (the demo version of your backup.exe names it's hidden window with its filename minus '.exe') that will be the first part of the hidden title, the commandline parameter is the rest of the title the next inputbox displays all instances of 'Backup.exe' and the commandline parameters they where run with see image link: notice two instances of backup.exe are running one daily differential and one incremental (ok so its contradictory, I'm just using your example and a supposition of incremental backup as an example) any new instance of backup.exe run with either of those two commandline parameters would close immediately because of _Singleton() in backup.exe or if only one instance of backup.exe can run at a time then make singleton close any second instance of the script with this line: Func OnAutoItStart() _Singleton("backup",0) ; only one instance of backup.exe can run EndFunc pseudocode demo version of your 'Backup.exe' Run: backup.exe Full Daily Differential to File expandcollapse popup#NoTrayIcon Opt("TrayIconHide", 1) #include <Misc.au3> Func OnAutoItStart() ; if second instance of backup.exe with the same command ;line is run, it will close immediately because an instance of the script ;with same commandline is already running and a Mutex named: 'Full Daily Differential to File' already exists $title = StringTrimRight(@ScriptName, 4) If Stringlen($CmdLineRaw) Then $title &= ": "&$CmdLineRaw $mutex = $CmdLineRaw Else $mutex = $title EndIf AutoItWinSetTitle($title) ; instance of Backup.exe now titled with commandline parameters ; Title of script now: 'Backup: Full Daily Differential to File' If Not _Singleton("Global\"&$mutex,1) Then Exit(2) ; Mutex is now: 'Full Daily Differential to File' EndFunc ; run ntbackup.exe with your commandline arguments Switch $CmdLineRaw Case 'Full Daily Differential to File' ; read ini file ; Run ntbackup.exe with arguments from ini Case 'Daily Incremental to File' EndSwitch While 1 ; message loop code, wait for events etc. Sleep(5000) WEnd Func OnAutoItExit(); allows polite script shutdown cleanup of needed If @exitCode <> 2 Then ; _Singleton() exit, bypass any script shutdown cleanup ; chance to do cleanup on script closure ; add cleanup code here if required Beep(1000,5) ; audible indication of normal script shutdown (Optional) Else Beep(1500,5) ; audible indication of _Singleton() script shutdown (Optional) EndIf EndFunc Edited February 11, 2008 by rover I see fascists...
rover Posted February 11, 2008 Posted February 11, 2008 I see that VisualCron has a setting per job to not run a job if it is already running (Version 4.82) wouldn't that prevent jobs being run concurrently, regardless of trigger or condition settings? Are these backup jobs run remotely on multiple machines or you are just backing up a single machine (server) ? I assume because you use a master ini file with each backup operation parameter set defined, that you don't want to use hard coded versions of your backup.exe named for the backup operation section in that ini file, and have all parameters hardcoded in those files so you have in VisualCron listed backup jobs that run those customized versions of the backup.exe probably because the ini file includes admin email address, backup locations and other info that may need updating for all scripts. but you could have custom named copies of backup.exe that when run get the corresponding section of the master ini file for the NTBackup parameters so you could run them without using commandline parameters filename examples from your old backup.zip you posted to the forums Full Daily Differential to File.exe Archive Monthly Normal to Tape.exe Archive Weekly Normal to File.exe Current Daily Differential to File.exe Current Weekly Copy to Tape.exe Current Weekly Normal to File.exe When these files are run they read the corresponding section (by filename) in the master ini file for the NTBackup parameters. You should place _Singleton() in each file so only a single instance can be run. In taskmanager each backup scripts name is its function (should have just suggested this in the first place...) relevance of the responses on the forums to what you are trying to do are only as good as the clarity of input from you, the OP ('Original Poster) we make assumptions otherwise on what you want or don't want, get sidetracked, have our own interpretations. It helps if you post code examples and participate in your own solution... you have a number of solutions to choose from 1 - using customized name versions of the backup script for each backup function 2 - using _Singleton() to prevent script instance duplication 3 - using a GUI script to monitor all backup script process for commandline the process was run with - Hubertus WMI code 4 - monitoring all backup script process with hidden window titles with same substring name 'Backup' and commandline parms used for title - my code (note that the code I posted could be modified to monitor by processname instead of window title, I just used an 'off the shelf' example of DllCallback from the forums. the results are the same) Good Luck I see fascists...
laurin1 Posted February 11, 2008 Author Posted February 11, 2008 Thanks for all of your input. I need to work through a few of these ideas and see what fits best. Keith Davis MCSA, ZCE, A+, N+ http://www.laurinkeithdavis.com
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