|
take a look at to http://www.mindspring.com/~matt.raffel/code/NET/ There are 3 classes that might help you ApplicationCommandLine.cs CommandlineArgument.cs CommandlineException.cs To use them do something like this: First build an array of acceptable commandline arguements, such as ... ApplicationCommandLine _cmdProcessor = new ApplicationCommandLine(); // create the help argument _cmdProcessor.AddArg(new CommandLineArgument("?", "prints help")); // create the toggled argument of erase only or overwrite file options SwitchableCommandLineArgument eraseOnly = new SwitchableCommandLineArgument("e", "only erases the file, content IS NOT overwritten first"); SwitchableCommandLineArgument overwriteFile = new SwitchableCommandLineArgument("w", "overwrites the file prior to erasing [default]"); eraseOnly.SwitchArg = overwriteFile; overwriteFile.SwitchArg = eraseOnly; overwriteFile.Selected = true; _cmdProcessor.AddArg(eraseOnly); _cmdProcessor.AddArg(overwriteFile); // create an options _cmdProcessor.AddArg(new CommandLineArgument("z", "overwrites with zeroes")); // create an option that takes data _cmdProcessor.AddArg(new DataCommandLineArgument("n", "number of times the file should be overwritten")); then you need to process the command line by calling // assuming args is the string[] from main _cmdProcessor.ParseCmdLineToArgs(args); then you need to loop through to find the ones that have been set. I do something like this foreach(CommandLineArgument argument in _cmdProcessor) { if (true == argument.Selected) { char ch = argument.Argument.ToString().ToCharArray()[0]; switch (ch) { case 'z': // do something break; case '?': PrintHelp(); break; default: throw new Exception(String.Format("found an weird arugment {0}", ch)); } } There maybe better ways but this works for me. I use it in my command line tools all the time. Hope it helps... Matt Abe Gillespie wrote: 1. Is there a utility class out there that helps parse command line arguments in a standard way? 2. I think I ran into a bug playing around with the command line. When I send an asterisk "*" as one of the arguments I get some weird stuff. On Windows it seems to work ok. Try the following with an asterisk as one of the args: |
_______________________________________________ Mono-list maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-list
