CommandLineParser class

Provides methods for reading and accessing of command-line parameters and options.

Diese Klasse stellt Methoden zum Einlesen von Kommandozeilenparametern bereit. Zunächst werden alle Optionen namentlich registriert, dabei kann ein kurzer und ein langer Name angegeben werden, und ob die Option einen weiteren Parameter erfordert. Anschließend kann mit weiteren Methoden abgefragt werden, ob eine bestimmte Option angegeben wurde und welchen Parameterwert sie hat. Die Parametersyntax orientiert sich dabei an den POSIX-getopt()-Funktionen.

Compatibility: .NET Version 2.0 or newer

Kommandozeilenparameter in PHP? Weiter zum Arguments-Parser…

Beispiel

Der folgende Beispielcode zeigt, wie die CommandLineParser-Klasse verwendet werden kann:

using Unclassified;

public static void Main()
{
    CommandLineParser clp = new CommandLineParser();

    clp.AddKnownOption("h", "help");
    clp.AddKnownOption("H", "host", true);
    clp.AddKnownOption("u", "user", true);
    clp.AddKnownOption("p", "pass", true);
    clp.AddKnownOption("q", "quiet");
    clp.AddKnownOption("s", "start");
    clp.AddKnownOption("v", "verbose");

    if (clp.IsOptionSet("h"))
    {
        // Show some help
        Console.WriteLine("Usage:");
        Console.WriteLine("");
        Console.WriteLine("-h, --help                Show this help");
        Console.WriteLine("-u, --user <username>     Specify username");
        Console.WriteLine("-H, --host <hostname>     Specify hostname");
        Console.WriteLine("-v, --verbose             Be verbose");
        Console.WriteLine("…");
        Console.WriteLine("");
        Console.WriteLine("Examples:");
        Console.WriteLine("  me.exe -h               Show this help");
        Console.WriteLine("  me.exe --help           Show this help");
        Console.WriteLine("  me.exe -u me -s         Start with username 'me'");
        Console.WriteLine("  me.exe -Huv server me   Hostname 'server', username 'me', be verbose");
        return;
    }

    bool beQuiet = clp.IsOptionSet("q");
    bool beVerbose = clp.IsOptionSet("v");

    string hostname = clp.GetOptionValue("H");
    string username = clp.GetOptionValue("u");
    string password = clp.GetOptionValue("p");

    // Read additional arguments not belonging to any options
    string filename1 = clp.GetArgument(0);
    string filename2 = clp.GetArgument(1);

    if (clp.IsOptionSet("s"))
    {
        // Start now
    }
}

Download

CommandLineParser.cs5.2 KiBQuelltext der CommandLineParser-Klasse

Änderungen

2014Feb5
Funktion GetArgumentCount hinzugefügt.

Licence and terms of use

Copying and distribution of this file, with or without modification, are permitted provided the copyright notice and this notice are preserved. This file is offered as-is, without any warranty. (GNU All-Permissive licence)

Statistic data

  • Created on 2009-09-19, updated on 2014-02-05.
  • Ca. 100 lines of code, estimated development costs: 100 - 400 €