von der cmd daten in ein c# programm übergeben
Hallo ich hoffe ihr könnt mir weiter helfen ich finde keine lösung wie ich von der cmd aus ein programm starten kann das ich selbst in c# geschrieben habe und ich möchte dann in der cmd ungefähr sowas eingeben wie zb programm.exe punkt a punkt b punkt c und diese verschiedenen punkte dann in meinem programm benutzen könnenjedoch hab ich keine ahnung wie ich das realisieren soll
7 Antworten
Oben rechts in VisualStudio siehst du die Datei- und Ordnerübersicht deines Projekts. Führe einen Doppelklick auf “Program“ aus. Darin findest du die Funktion ...
static void Main(string[] args)
In dem String-Array “args“ befinden sich alle Argumente, die als Start-Parameter von dir angegeben wurden. Im Debug-Modus werden darin auch Parameter von VisualStudio liegen. Du wirst aber ohnehin das String-Array durchlaufen und jeden Parameter genau betrachten müssen, um deine Parameter zu finden und entsprechend darauf reagieren zu können.
Ich schätze, das sollte dir bis hier hin klar sein!?
Geüße, Toraka
wenn du mehrer parameter verwendest, kann ich diese commandline parser lib in dein project empfehlen... man muss das rad nciht zwei mal erfinden...
http://commandline.codeplex.com/
hier ein beispiel vom projekt seite:
// Define a class to receive parsed values
class Options {
[Option('r', "read", Required = true,
HelpText = "Input file to be processed.")]
public string InputFile { get; set; }
[Option('v', "verbose", DefaultValue = true,
HelpText = "Prints all messages to standard output.")]
public bool Verbose { get; set; }
[ParserState]
public IParserState LastParserState { get; set; }
[HelpOption]
public string GetUsage() {
return HelpText.AutoBuild(this,
(HelpText current) => HelpText.DefaultParsingErrorsHandler(this, current));
}
}
// Consume them
static void Main(string[] args) {
var options = new Options();
if (CommandLine.Parser.Default.ParseArguments(args, options)) {
// Values are available here
if (options.Verbose) Console.WriteLine("Filename: {0}", options.InputFile);
}
}
um deine parameter dann weiter zu geben im cmd:
deinprogramm.exe -r "c:\bla.txt" -v false
oder auch:
deinprogramm.exe --read "c:\bla.txt" --verbose false
klar es ist recht maechtig, aber sehr hilfreich wenn man console-applicationen erstellt die mehrere parameter verarbeitet. Einige mit default werte, einige mandatory... die daten typen sowie hilfe texte werden auch gehandelt...
ja ein grosses aufgebot, aber fuer einige projekte kann es durchaus sinnvoll sein.
wenn ich ehrlich bin versteh ich gar nichts von ihrer lösung gibts da nicht eine einfachere methode
die einfache loesung ist was Toraka beschrieben hatte.
die parameter kannst du so uebergeben:
deinprogram.exe "One" "Two" "Three"
dann in dein code:
static void Main(string[] args)
{
foreach (string s in args)
{
Console.WriteLine(s);
}
var first = args[0];
var seccond = args[1];
var third= args[2];
}
du solltests allerdings auf null pruefen da es immer sein kann das keine oder weniger parameter als erwartet uebergeben werden koennen!
Beispiel:
-
Öffne die Eingabeaufforderung mit Win+R
-
Gib Programmpfad und Parameter ein.
"C:\\Test\\test.exe" "parameter1" "parameter2"
(Es geht auch einfacher)
-
Im Programm kannst du nun die Parameter auslesen. Ein Beispiel:
static void Main(string[] args) { //args enthält alle Parameter //args == new string[]{"parameter1", "parameter2"}; }
Wie man das jetzt mit cmd macht, weis ich nicht.
Ich hoffe es hilft dir.
Danke sehr soweit war in auch schon in der konsolenanwendung jedoch muss ich das in der windows forms realisieren
Das geht genauso! In der Programm.cs Datei wird das Programm gestartet. Hier kannst du die Parameter auslesen.
Alternativ kannst du es immer unter Environment.CommandLine oder System.Diagnostics.Process.GetCurrentProcess().StartInfo.Arguments auslesen.
Auf CMD eingeben / z.B = start explorer (.exe musst du [Denke ich] nicht angeben. Damit startest du in Windows die Bibliothek) Vielleicht hilft dir das ;)
über die main() Parameter:
http://msdn.microsoft.com/de-de/library/acy3edy3.aspx
Gruß
Huch, so ein großes Aufgebot für das Auswerten eines String-Arrays.