C# Befehlszeilen-Argumente (Command Parameter) auslesen

Befehlszeilenargumente sind Parameter, die einer Anwendung beim Start mitgegeben werden. Unter Windows können jedem Programm Parameter beim Start mitgegeben werden. Ob die Anwendung diese Parameter beachtet, liegt am Programm selbst. So liegt es letztlich am Programmierer, wie er mit den Argumenten umgeht.

So können Sie beispielsweise den Standard-Texteditor Notepad unter Windows mit „notepad.exe“ aufrufen. Rufen Sie Notepad mit „notepad.exe c:datei.txt“ auf, versucht Notepad mit dem Start die Datei „C:datei.txt“ zu öffnen.

Dieses Verhalten von Windows können Sie vielfältig auch für eigene Anwendungen nutzen. Wenn Sie Dateien zur Automatisierung schreiben, die je nach Aufruf nur Teilbereiche erledigen sollen oder bestimmte (standardisierte) Benutzereingaben benötigen, können Sie diese über die „CommandLineArgs“ abfragen. Nehmen wir einmal an, ein Programm soll jeden Tag einen Teilbereich von Daten abarbeiten, so können Sie natürlich im Programm den Wochentag abfragen und hardcodiert den Teilbereich festlegen. Wenn Sie jedoch den Bereich nachträglich ändern möchten, müssen Sie Ihr Programm wieder anfassen, ändern, erstellen und veröffentlichen. Eine bessere Lösung ist, den Bereich über die CommandLine beim Start zu definieren. So kann beispielsweise

C:meine-anwendung.exe –start_id:1 –end_id:500000

Der Aufruf für den ersten Tag (beispielsweise montags) und

C:meine-anwendung.exe –start_id:5000000 –end_id:1000000

der Aufruf für den zweiten Tag (beispielweise dienstags) sein. So sind Sie sehr flexibel, was die Anpassung angeht.
Je nach Anwendung ist es natürlich auch möglich, die Werte in einer ini-Datei oder aus der Registry auszulesen. Ini-Dateien waren lange Zeit die einzige Möglichkeit, mehrere Parameter dauerhaft zu speichern. Dank der Registry oder auch Datenbanken konnten diese Wege beschritten werden. Ini-Dateien waren dann plötzlich sogar „verpönt“. Ich persönlich bin nach wie vor ein Fan von ini-Dateien, wenn es darum geht, einige wenige Parameter einem Programm mitzugeben bzw. auch aus der Anwendung heraus zu speichern (letzteres geht mit den CommandLineArgs nicht!). Im Gegensatz zu Registry-Einträgen oder einer Datenbank kann die Anwendung mitsamt der ini-Datei problemlos auf einen anderen Rechner übertragen werden.

Startparameter unter C# auslesen (Command Line)
Unter C# stehen die Aufrufparameter in den CommandLineArgs zur Verfügung:

using System; 
using System.Collections.Generic; 
using System.Text; 
using System.Text.RegularExpressions; 

namespace ConsoleApplication1 
{ 
class Program 
{ 
static void Main(string[] args) 
{ 


//Befehlszeilenargumente auslesen 
string[] CommandLineArgs = Environment.GetCommandLineArgs(); 

//CommandLineArgs[0]: Immer der Dateipfad 
if (CommandLineArgs.Length > 1) 
{ 
Console.WriteLine(CommandLineArgs[1].ToString()); 
} 


//Warte 
Console.ReadLine(); 

} 
}

Dieses Beispiel zeigt Ihnen der Zugriff auf den ersten Command-Line Parameter. Sie können das Programm auch im Debug-Modus testen, wenn Sie „Befehlszeilen-Argumente“ innerhalb Visual Studio eingeben. Klicken Sie hierfür auf „Projekt“, „PROGRAMMNAME-Eigenschaften“. Dann den Reiter „Debuggen“ auswählen. Dort können Sie unter „Befehlszeilenargumente“ die Übergabeparameter eingeben. Diese stehen Ihnen dann auch im Debug-Modus zur Verfügung.

Die Parameter stehen Ihnen bei einer Windows-Forms und bei einer Konsolen.Anwendung als Array vom Typ String zur Verfügung. Zu beachten ist, dass der erste Parameter „[0]“  immer der Pfad und Name des eigenen Programmes ist.

Schreibe einen Kommentar