Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

Wie kann man Kommandozeilenparameter übergeben, auslesen und nutzen?
der_sharky
myCSharp.de - Member



Dabei seit:
Beiträge: 23

Themenstarter:

Wie kann man Kommandozeilenparameter übergeben, auslesen und nutzen?

beantworten | zitieren | melden

Hallo zusammen,

ich beschäftige mich gerade mit der Kommandozeilenparameter in C# und Visual Studio. Im Visual Studio habe ich eine einfache Anwendung erstellt und testmässig drei Parameter eingegeben. Später möchte ich in der Eingabeauforderung die Anwendung (exe) starten. Je nach ausgewählten Parameter sollte die Anwendung vershiedener Text ausgeben.

Meine Frage:
Wie benutze ich die Parameter im C# Code bzw. wie kann ich bestimmen was passiert wenn einen Parameter ausgewählt wurde ? Soll ich If-Anweisungen benutzen ? So ist der Code :
Danke !


 static void Main(string[] args)
        {

  

            var arg1 = args[0];
            var arg2 = args[1];
            var arg3 = args[2];

//Wie kann ich es  hier programmieren, wenn ich in der Eingabeauforderung z.B die Parameter eigebe dass sich die Anwedung entprechend verhält ? Wenn Parameter X ausgewählt wurde dann mach das und das

            if (?)
                Console.WriteLine("Das ist a");
            Console.ReadLine();

            if (?)
                Console.WriteLine("Das ist b");
            Console.ReadLine();

            if (?)
                Console.WriteLine("Das ist c");
            Console.ReadLine();
}
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von der_sharky am .
private Nachricht | Beiträge des Benutzers
JimStark
myCSharp.de - Member

Avatar #dOpLzh7hN1az1g0eGRc0.jpg


Dabei seit:
Beiträge: 225

beantworten | zitieren | melden

Ich versteh nicht genau was du machen willst,

args.Length gibt dir die Anzahl an Parametern, also die Länge des arrays.
Mit args[0,...] greifst du dann auf die einzelnen Parameter zu.

Siehe hier:https://docs.microsoft.com/de-de/dotnet/csharp/programming-guide/main-and-command-args/how-to-display-command-line-arguments
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von JimStark am .
private Nachricht | Beiträge des Benutzers
der_sharky
myCSharp.de - Member



Dabei seit:
Beiträge: 23

Themenstarter:

beantworten | zitieren | melden

Hi JimStark du hast Recht. Eigentlich was ich wissen möchte ist wie ich innerhalb des Codes alles steueren kann. Wenn Parameter X ausgewählt wurde dann mach das und das. Übrigens Danke für den Link. Leider dort wird nur gezeigt wie man alle Parameter in der Konsole ausgeben kann.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von der_sharky am .
private Nachricht | Beiträge des Benutzers
BerndFfm
myCSharp.de - Team

Avatar #avatar-3299.jpg


Dabei seit:
Beiträge: 3727
Herkunft: Frankfurt a.M.

beantworten | zitieren | melden

Besser so (ungetestet) :


foreach(string arg in args)
{
    if (arg.ToLower() == "/a")  Console.WriteLine("/a gewählt");
    if (arg.ToLower() == "/b")  Console.WriteLine("/b gewählt");
    if (arg.ToLower() == "/c")  Console.WriteLine("/c gewählt");
}

args[0] ist der Name der Anwendung selber.

Grüße Bernd
Die kostenlose Unternehmenssoftware : [url=https://seven-c.de/die-quasar-3-community-version/]Die Quasar-3 Community Version[/url] Workshop : [url=https://download.seven-c.de/files/datenbankenhowto.htm]Datenbanken mit ADO.NET[/url]
private Nachricht | Beiträge des Benutzers
MarsStein
myCSharp.de - Experte

Avatar #avatar-3191.gif


Dabei seit:
Beiträge: 3429
Herkunft: Trier -> München

beantworten | zitieren | melden

Hallo,
Zitat von BerndFfm
args[0] ist der Name der Anwendung selber.

Nein. Nicht in C#/.NET.

Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
private Nachricht | Beiträge des Benutzers
Taipi88
myCSharp.de - Member

Avatar #avatar-3220.jpg


Dabei seit:
Beiträge: 1044
Herkunft: Mainz

beantworten | zitieren | melden

Hi,

als Anmerkung und gerade wenn es etwas vielfältiger und komplexer wird kann es auch das Leben erleichtern, wenn man eine entsprechende Lib benutzt.

Für eine meiner Anwendungen habe ich z.B. https://www.nuget.org/packages/CommandLineParser/ verwendet.

Wobei die einfachste Möglichkeit (siehe @BerndFfm wenn du nur wenige und unkomplizierte Argumente brauchst) hier definitiv den Vorzug genießen sollte. Muss ja keiner das Rad neu erfinden...

LG
private Nachricht | Beiträge des Benutzers
BerndFfm
myCSharp.de - Team

Avatar #avatar-3299.jpg


Dabei seit:
Beiträge: 3727
Herkunft: Frankfurt a.M.

beantworten | zitieren | melden

Zitat von MarsStein
Hallo,
Zitat von BerndFfm
args[0] ist der Name der Anwendung selber.

Nein. Nicht in C#/.NET.

Gruß, MarsStein

Tatsächlich ! Wo hatte ich das nur wieder her ?

Grüße Bernd
Die kostenlose Unternehmenssoftware : [url=https://seven-c.de/die-quasar-3-community-version/]Die Quasar-3 Community Version[/url] Workshop : [url=https://download.seven-c.de/files/datenbankenhowto.htm]Datenbanken mit ADO.NET[/url]
private Nachricht | Beiträge des Benutzers
Spook
myCSharp.de - Member



Dabei seit:
Beiträge: 233
Herkunft: Esslingen a.N.

beantworten | zitieren | melden

Zitat
Wo hatte ich das nur wieder her ?
Environment.GetCommandLineArgs gibt dir den Pfad der Anwendung als erstes Argument.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15618
Herkunft: BW

beantworten | zitieren | melden

=> https://github.com/natemcmaster/CommandLineUtils
private Nachricht | Beiträge des Benutzers