CyberSlug Posted February 2, 2004 Share Posted February 2, 2004 I'm writing some scripts that will take command-line parameters. For example: myScript.exe [msDelay] {/INCLUDE | /EXCLUDE} -E listOfFileExtensions Do any of you experts have advice / sample scripts / notation guidelines? Thanks Use Mozilla | Take a look at My Disorganized AutoIt stuff | Very very old: AutoBuilder 11 Jan 2005 prototype I need to update my sig! Link to comment Share on other sites More sharing options...
Developers Jos Posted February 2, 2004 Developers Share Posted February 2, 2004 This is a portion of a utility i use to install/configure SUS and it takes several commandline options.. maybe it give s you some food for thought.. expandcollapse popup$install = 0 ; switch for client install $Force = 0 ; switch for forcing download of patches and installation/reboot $Batch = 0 ; indicator for asking confirmation $Status = 0 ; indicator for Showing SUS status $Susserver = ""; Sus server name $Password = ""; PSW for autologon after reboot ; $V_Arg = "Valid Arguments are:" & @LF $V_Arg = $V_Arg & " /batch - don't prompt for anything.. fail is something is missing." & @LF $V_Arg = $V_Arg & " /install - Install the Client and Update Registry." & @LF $V_Arg = $V_Arg & " /force - Force Software downloads and installation/reboot." & @LF $V_Arg = $V_Arg & " /s NAME - Target Susserver." & @LF $V_Arg = $V_Arg & " /p Password for userid " & EnvGet("USERNAME") & ", used for autologon after reboot." & @LF $V_Arg = $V_Arg & " /reset - Removes the local SUS information, pc will go to microsoft for updates." & @LF ; retrieve commandline parameters For $x = 1 to $CmdLine[0] Select Case $CmdLine[$x] = "/batch" $Batch = 1 writelog(" -- Running in Batch mode.") Case $CmdLine[$x] = "/install" $install = 1 Case $CmdLine[$x] = "/force" $Force = 1 Case $CmdLine[$x] = "/reset" RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate", "") MsgBox( 1, "SUS Utility", "Windows Update setting are reset.", 5) Exit Case $CmdLine[$x] = "/s" $x = $x + 1 $Susserver = $CmdLine[$x] Case $CmdLine[$x] = "/p" $x = $x + 1 $Password = $CmdLine[$x] Case $CmdLine[$x] = "/?" Or $CmdLine[$x] = "/h" Or $CmdLine[$x] = "/help" MsgBox( 1, "SUS Utility", "" & $v_Arg,) Exit Case Else MsgBox( 1, "SUS Utility", "Wrong commandline argument: " & $CmdLine[$x] & @LF & $v_Arg,) Exit EndSelect Next lee321987 1 SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past. Link to comment Share on other sites More sharing options...
Valik Posted February 2, 2004 Share Posted February 2, 2004 I also use a similar method as JdeB. It seems most easy to have a global flag representing an argument, then set that flag to a true condition by iterating through the arguments in a loop while comparing them in a case structure. Link to comment Share on other sites More sharing options...
jpm Posted February 2, 2004 Share Posted February 2, 2004 I share JdeB and Valik advise. I can just add that It is uncommon to see /keyword mixed with - in the same syntax / come from windows - from unix in general under windows - are considered as / that just perfectionism Link to comment Share on other sites More sharing options...
CyberSlug Posted February 2, 2004 Author Share Posted February 2, 2004 Thanks for all your help Use Mozilla | Take a look at My Disorganized AutoIt stuff | Very very old: AutoBuilder 11 Jan 2005 prototype I need to update my sig! Link to comment Share on other sites More sharing options...
MattNis Posted February 2, 2004 Share Posted February 2, 2004 Well, Now that we have the beautiful Call() function, Name your functions the same as the possible parameter values. Then you just have to write.. Call($CmdLine[$2]) ; or whatever index you want at least one less SELECT structure to write [quote]I was busy waiting all night for the Columbus Day Bunny to come down my chimney and light fireworks in my pumpkin.There's so much wrong with that.Oh, I'm sorry, i forgot you were Jewish.[/quote] Link to comment Share on other sites More sharing options...
Valik Posted February 2, 2004 Share Posted February 2, 2004 Well, Now that we have the beautiful Call() function, Name your functions the same as the possible parameter values. Then you just have to write.. Call($CmdLine[$2]); or whatever index you want at least one less SELECT structure to writeThat has too much potential for problems. The Call function is dangerous in that you may attempt to call a function that doesn't exist. In C, when using pointers to functions (Similar to Call), a good programmer will at least check to make sure the pointer actually points to something before using it, and if not, properly handle that situation, too. AutoIt doesn't have that capability though, making Call a source for trouble. P.S. Always remember, even though you may know how to properly use your programs, somebody else may not, and so you have to try to account for what they may try to do to your program, even if that isn't anything somebody should want to try. It's for that reason that I think using Call is dangerous. Link to comment Share on other sites More sharing options...
MattNis Posted February 3, 2004 Share Posted February 3, 2004 You are absolutely right Valik, I just assumed that CyberSlug would check the @error condition after that line, and didn't bother writting it in. [quote]I was busy waiting all night for the Columbus Day Bunny to come down my chimney and light fireworks in my pumpkin.There's so much wrong with that.Oh, I'm sorry, i forgot you were Jewish.[/quote] 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