Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Key value pair as a param in a console app

Is there an easy way to allow a collection of Key/Value pairs (both strings) as command line parameters to a console app?

like image 794
Vaccano Avatar asked May 10 '11 19:05

Vaccano


2 Answers

If you mean having a commandline looking like this: c:> YourProgram.exe /switch1:value1 /switch2:value2 ...

This can easily be parsed on startup with something looking like this:

private static void Main(string[] args)
{
   Regex cmdRegEx = new Regex(@"/(?<name>.+?):(?<val>.+)");

   Dictionary<string, string> cmdArgs = new Dictionary<string, string>();
   foreach (string s in args)
   {
      Match m = cmdRegEx.Match(s);
      if (m.Success)
      {
         cmdArgs.Add(m.Groups[1].Value, m.Groups[2].Value);
      }
   }
}

You can then do lookups in cmdArgs dictionary. Not sure if that's what you want though.

like image 74
Daniel Avatar answered Sep 19 '22 17:09

Daniel


There is no good way to precisely pass key/value pairs from command-line. The only thing that's available is an array of string which you can loop through and extract as key/value pairs.

using System;

public class Class1
{
   public static void Main(string[] args)
   {
      Dictionary<string, string> values = new Dictionary<string, string>();

      // hopefully you have even number args count.
      for(int i=0; i < args.Length; i+=2){
      {
           values.Add(args[i], args[i+1]);
      }

   }
}

and then call

Class1.exe key1 value1 key2 value2

like image 26
Bala R Avatar answered Sep 19 '22 17:09

Bala R