Diana (Cda) Posted October 6, 2008 Share Posted October 6, 2008 Some time back I recvd great help where WinExists was brought to my attention as a way to have the script not t proceed if it finds a particular file open. However, I've never managed to get the syntax right for more than one condition though I've read the help file and scanned the forum several times since then. Can't get it to work yet. My latest attempt today is this:If NOT WinExists(@ScriptDir & "\PUAC- LaunchIfNotRunning - DO NOT RUN APPS.txt") = True AND If Not ProcessExists("SayTime95.exe") = True THEN Run($ThisPartition & "\CLOCK\clockSpeech, SayTime 95 v4.05\APP- SayTime 95 v4.05\SayTime95.exe","", @SW_HIDE) What is needed is: - if the text file "PUAC- LaunchIfNotRunning - DO NOT RUN APPS.txt" is not open, - AND - "SayTime95.exe" is not running - THEN - LAUNCH "SayTime95.exe". But the error keeps coming back that the "If" requires a "Then". So I've obviously goofed somewhere. Link to comment Share on other sites More sharing options...
water Posted October 6, 2008 Share Posted October 6, 2008 You simply have to remove the second "If":If NOT WinExists(@ScriptDir & "\PUAC- LaunchIfNotRunning - DO NOT RUN APPS.txt") = True AND If Not ProcessExists("SayTime95.exe") = True THEN Run($ThisPartition & "\CLOCK\clockSpeech, SayTime 95 v4.05\APP- SayTime 95 v4.05\SayTime95.exe","", @SW_HIDE) My UDFs and Tutorials: Spoiler UDFs:Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - WikiExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example ScriptsOutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - WikiOutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - DownloadOutlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - WikiPowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - WikiTask Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs:Excel - Example Scripts - WikiWord - Wiki Tutorials:ADO - WikiWebDriver - Wiki Link to comment Share on other sites More sharing options...
Diana (Cda) Posted October 6, 2008 Author Share Posted October 6, 2008 You simply have to remove the second "If": If NOT WinExists(@ScriptDir & "\PUAC- LaunchIfNotRunning - DO NOT RUN APPS.txt") = True AND If Not ProcessExists("SayTime95.exe") = True THEN Run($ThisPartition & "\CLOCK\clockSpeech, SayTime 95 v4.05\APP- SayTime 95 v4.05\SayTime95.exe","", @SW_HIDE)Well, d'uh! That's what's been holding me up all this time ... <g> Too funny. Tested it and works great. I simplified things by replacing everything with variables. Has made life easier. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= $Condition1 = NOT WinExists(@ScriptDir & "\PUAC- LaunchIfNotRunning - DO NOT RUN APPS.txt") ; text file is not open to disable condition $Condition2 = NOT ProcessExists("SayTime95.exe") ; SayTime is not running condition $Condition3 = Not ProcessExists("wv_player.exe") ; WavPlay is not running condition $Condition4 = Not ProcessExists("CoolPlayer.exe") ; CoolPlayer is not running condition ;------------------------------------------------ $ThisPartition = StringLeft(@ScriptDir, 2) $Process2Run1 = $ThisPartition & "\CLOCK\clockSpeech, SayTime 95 v4.05\APP- SayTime 95 v4.05\SayTime95.exe" $Process2Run2 = @ScriptDir & "\0- PAYDAY wakeup music 01 (3 songs).wav" $Process2Run3 = @ScriptDir & "\Harry Potter music.m3u" ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= If $Condition1 = True AND $Condition2 = True THEN Run($Process2Run1) ; run SayTime if conditions met Sleep(1500) If $Condition1 = True and $Condition4 = True Then ShellExecute($Process2Run3) ; run m3u if conditions met Thanks! Link to comment Share on other sites More sharing options...
Diana (Cda) Posted October 6, 2008 Author Share Posted October 6, 2008 You simply have to remove the second "If": If NOT WinExists(@ScriptDir & "\PUAC- LaunchIfNotRunning - DO NOT RUN APPS.txt") = True AND If Not ProcessExists("SayTime95.exe") = True THEN Run($ThisPartition & "\CLOCK\clockSpeech, SayTime 95 v4.05\APP- SayTime 95 v4.05\SayTime95.exe","", @SW_HIDE)Well, d'uh! That's what's been holding me up all this time ... <g> Too funny. Tested it and works great. I simplified things by replacing everything with variables. Has made life easier. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= $Condition1 = NOT WinExists(@ScriptDir & "\PUAC- LaunchIfNotRunning - DO NOT RUN APPS.txt") ; text file is not open to disable condition $Condition2 = NOT ProcessExists("SayTime95.exe") ; SayTime is not running condition $Condition3 = Not ProcessExists("wv_player.exe") ; WavPlay is not running condition $Condition4 = Not ProcessExists("CoolPlayer.exe") ; CoolPlayer is not running condition ;------------------------------------------------ $ThisPartition = StringLeft(@ScriptDir, 2) $Process2Run1 = $ThisPartition & "\CLOCK\clockSpeech, SayTime 95 v4.05\APP- SayTime 95 v4.05\SayTime95.exe" $Process2Run2 = @ScriptDir & "\0- PAYDAY wakeup music 01 (3 songs).wav" $Process2Run3 = @ScriptDir & "\Harry Potter music.m3u" ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= If $Condition1 = True AND $Condition2 = True THEN Run($Process2Run1) ; run SayTime if conditions met Sleep(1500) If $Condition1 = True and $Condition4 = True Then ShellExecute($Process2Run3) ; run m3u if conditions met Thanks! Link to comment Share on other sites More sharing options...
Diana (Cda) Posted October 10, 2008 Author Share Posted October 10, 2008 You simply have to remove the second "If": If NOT WinExists(@ScriptDir & "\PUAC- LaunchIfNotRunning - DO NOT RUN APPS.txt") = True AND If Not ProcessExists("SayTime95.exe") = True THEN Run($ThisPartition & "\CLOCK\clockSpeech, SayTime 95 v4.05\APP- SayTime 95 v4.05\SayTime95.exe","", @SW_HIDE)Thank you, that works perfectly! This is what I did with that, besides making everything into variables to make the syntax easier to deal with:If $Condition1 = True AND $Condition2 = True THEN Run($Process2Run1) ; run SayTime if conditions met Sleep(1500) If $Condition1 = True and $Condition4 = True THEN ShellExecute($Process2Run3) Thanks! Link to comment Share on other sites More sharing options...
Diana (Cda) Posted October 10, 2008 Author Share Posted October 10, 2008 Is there a way, though, to run two THEN's, meaning, what if there is something like this: If $Condition1 = True AND $Condition2 = True THEN Run($Process2Run1) AND Run($Process2Run2) The above doesn't work but is there a way to have 2 things happen if one or more conditions met? Thanks. Link to comment Share on other sites More sharing options...
martin Posted October 10, 2008 Share Posted October 10, 2008 (edited) Is there a way, though, to run two THEN's, meaning, what if there is something like this: If $Condition1 = True AND $Condition2 = True THEN Run($Process2Run1) AND Run($Process2Run2) The above doesn't work but is there a way to have 2 things happen if one or more conditions met? Thanks. expandcollapse popup If $Condition1 = True AND $Condition2 = True THEN Run($Process2Run1) Run($Process2Run2) ;anythiong else to be done if condition is true Else ;anything to be done if condition is not true EndIf [code=auto:0] But isn't this clear from the help? Edited October 10, 2008 by martin Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script. Link to comment Share on other sites More sharing options... Moderators SmOke_N Posted October 10, 2008 SmOke_N Moderators 16.3k 49 It's not what you know ... It's what you can prove! Moderators Share Posted October 10, 2008 I'm curious if this would work:If $Condition1 AND $Condition2 THEN Run($Process2Run1) + Run($Process2Run2)Can't see why not really. 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. Link to comment Share on other sites More sharing options...
Diana (Cda) Posted October 10, 2008 Author Share Posted October 10, 2008 I'm curious if this would work:If $Condition1 AND $Condition2 THEN Run($Process2Run1) + Run($Process2Run2)oÝ÷ Ø&§ßÛlyì!Êz-æ¥/êº^"ÛÊËaÇ(uà.¶-ºè¬¸§{xÐX¥{~7ãyðôß ¨Ø÷Just curious. Thanks. Cheers. Link to comment Share on other sites More sharing options...
martin Posted October 10, 2008 Share Posted October 10, 2008 I'm curious if this would work:If $Condition1 AND $Condition2 THEN Run($Process2Run1) + Run($Process2Run2)Can't see why not really.Seems like a good idea but doesn't work. Maybe the nearest is to have If $Condition1 And $Condition2 then runBoth() Func RunBoth() Run($a) Run($b) EndFunc But you could have something like If $cond1 And $Cond2 then Consolewrite(Run("cmd.exe") And Run("cmd.exe")) Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script. Link to comment Share on other sites More sharing options...
trancexx Posted October 10, 2008 Share Posted October 10, 2008 (edited) But you could have something like If $cond1 And $Cond2 then Consolewrite(Run("cmd.exe") And Run("cmd.exe"))Why Consolewrite() and not Call()? Edited October 10, 2008 by trancexx ♡♡♡ . eMyvnE Link to comment Share on other sites More sharing options...
Moderators SmOke_N Posted October 10, 2008 Moderators Share Posted October 10, 2008 (edited) Seems like a good idea but doesn't work. Maybe the nearest is to have If $Condition1 And $Condition2 then runBoth() Func RunBoth() Run($a) Run($b) EndFunc But you could have something like If $cond1 And $Cond2 then Consolewrite(Run("cmd.exe") And Run("cmd.exe"))This is not really good of us to show this stuff lol... but this does work:Local $codition1 = 1, $condition2 = 1, $i_ret If $codition1 And $condition2 Then $i_ret = Run("cmd.exe") & Run("cmd.exe") ConsoleWrite($i_ret & @CRLF)oÝ÷ ØGb´ ݶ¬jëh×6Local $codition1 = 1, $condition2 = 1, $i_ret If $codition1 And $condition2 Then $i_ret = Run("cmd.exe") + Run("cmd.exe") ConsoleWrite($i_ret & @CRLF) Edited October 10, 2008 by SmOke_N 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. Link to comment Share on other sites More sharing options...
Diana (Cda) Posted October 10, 2008 Author Share Posted October 10, 2008 Seems like a good idea but doesn't work. Maybe the nearest is to have If $Condition1 And $Condition2 then runBoth() Func RunBoth() Run($a) Run($b) EndFunc But you could have something like If $cond1 And $Cond2 then Consolewrite(Run("cmd.exe") And Run("cmd.exe"))Actually, I see now that I gave a bad example. I happened to give the one script that uses run (my bad). The majority use ShellExecute. Bad, bad ... <g> It's a shame that nothing seems to work where everything is easily on one line like the example that doesn't work above. It would be tricky getting everything to work otherwise. The above workaround still uses 5 lines instead of 1 so my 3-line script above would translate into 15 lines. Yuck. <sigh> It's just that I foresee having another script that will use even 4 lines instead of my 3 here and it all would be just such a mess. I'll guess I'll have to live without the extra sleep and beeps that would make the script easier, that's what I needed to add. But adding all these extra lines would make "maintenance" and editing of such a script a nightmare esp. since I've been living without these extra sleepand beep "aids". I had them before I changed to the 2 conditions approach as shown here. But thanks, everyone. I learn a lot every time I fine-tune a script to do more precisely what is needed. This 2 condition approach all on 1 script line allows me a much more efficient way to "disable" some scripts. I just will continue to not have the extras until I figure out an easy way to add them that doesn't add any more lines. Thanks! Link to comment Share on other sites More sharing options...
trancexx Posted October 10, 2008 Share Posted October 10, 2008 You are bug manipulators ♡♡♡ . eMyvnE Link to comment Share on other sites More sharing options...
Overkill Posted October 10, 2008 Share Posted October 10, 2008 (edited) I wrote a little test script: Opt("WinTitleMatchMode",2) If NOT WinExists("LaunchIfNotRunning") AND NOT ProcessExists("SayTime95.exe") Then Run("PourMyCoffeeToo.exe") ProcessWait("PourMyCoffeeToo.exe") If Not ProcessExists("CoolPlayer.exe") Then ShellExecute("All That Remains - This Calling.mp3") EndIfoÝ÷ Ùj+çeGr«Ê¢¼¨¹«¢+Ù=ÁÐ ÅÕ½Ðí]¥¹Q¥Ñ±5Ñ¡5½ÅÕ½Ðì°È¤(%9=P]¥¹á¥ÍÑÌ ÅÕ½Ðí1Õ¹¡%9½ÑIÕ¹¹¥¹ÅÕ½Ðì¤99=PAɽÍÍá¥ÍÑÌ ÅÕ½ÐíMåQ¥µäÔ¹áÅÕ½Ðì¤Q¡¸(IÕ¸ ÅÕ½ÐíÉ¥ÙèÀäÈí 1= ,ÀäÈí±½MÁ °MåQ¥µäÔØиÀÔÀäÈíA@´MåQ¥µäÔØиÀÔÀäÈíMåQ¥µäÔ¹áÅÕ½Ðì¤(AɽÍÍ]¥Ð ÅÕ½ÐíMåQ¥µ¹áÅÕ½Ðì¤(%9½ÐAɽÍÍá¥ÍÑÌ ÅÕ½Ðí ½½±A±åȹáÅÕ½Ðì¤Q¡¸M¡±±áÕÑ ÅÕ½Ðí!ÉÉäA½ÑÑȵÕÍ¥¹´ÍÔÅÕ½Ðì¤(¹%oÝ÷ ØÚ0ü¨»§¶Ú,µªíºÈ§ö«¦åzËhr§ëayø¥y·¢ ek'¶§# .Û.¬¶Øb±«¢+Ù=ÁÐ ÅÕ½Ðí]¥¹Q¥Ñ±5Ñ¡5½ÅÕ½Ðì°È¤(ÀÌØíôÅÕ½ÐìÀ´AedÝÕÀµÕÍ¥ÀÄ Ìͽ¹Ì¤¹ÝØÅÕ½Ðì(ÀÌØíôÅÕ½Ðí!ÉÉäA½ÑÑȵÕÍ¥¹´ÍÔÅÕ½Ðì(ÀÌØíôÅÕ½Ðí±°Q¡ÐIµ¥¹Ì´Q¡¥Ì ±±¥¹¹µÀÌÅÕ½Ðì(%9=P]¥¹á¥ÍÑÌ ÅÕ½Ðí1Õ¹¡%9½ÑIÕ¹¹¥¹ÅÕ½Ðì¤99=PAɽÍÍá¥ÍÑÌ ÅÕ½ÐíMåQ¥µäÔ¹áÅÕ½Ðì¤Q¡¸(IÕ¸ ÅÕ½ÐíÉ¥ÙèÀäÈí 1= ,ÀäÈí±½MÁ °MåQ¥µäÔØиÀÔÀäÈíA@´MåQ¥µäÔØиÀÔÀäÈíMåQ¥µäÔ¹áÅÕ½Ðì¤(AɽÍÍ]¥Ð ÅÕ½ÐíMåQ¥µ¹áÅÕ½Ðì¤(%9½ÐAɽÍÍá¥ÍÑÌ ÅÕ½Ðí ½½±A±åȹáÅÕ½Ðì¤Q¡¸M¡±±áÕÑ ÀÌØí¤íIÁ±Ý¥Ñ ÀÌØí½ÈÑÑȵÕÍ¥©Ý¥¹¬¨(¹% There's a lot of possible...heh...overkill in your script, like if saytime automatically closes itself after running, you could use runwait and do away with processwait...or if the file will still open w/ coolplayer running, you can simply add the shellexecute command to the list of things to do in the ifthen...only you can decide what to do with your script but those are some ideas. Edited October 10, 2008 by Overkill Link to comment Share on other sites More sharing options...
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