von der cmd daten in ein c# programm übergeben

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


suri2411 
Beitragsersteller
 01.07.2014, 13:03

wenn ich ehrlich bin versteh ich gar nichts von ihrer lösung gibts da nicht eine einfachere methode

0
Woolli  02.07.2014, 09:06
@suri2411

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!

0
Toraka  01.07.2014, 16:53

Huch, so ein großes Aufgebot für das Auswerten eines String-Arrays.

0
Woolli  02.07.2014, 08:57
@Toraka

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.

0

Beispiel:

  1. Öffne die Eingabeaufforderung mit Win+R

  2. Gib Programmpfad und Parameter ein.

    "C:\\Test\\test.exe" "parameter1" "parameter2"

    (Es geht auch einfacher)

  3. 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.


suri2411 
Beitragsersteller
 01.07.2014, 13:04

Danke sehr soweit war in auch schon in der konsolenanwendung jedoch muss ich das in der windows forms realisieren

0
JungerPadawan95  02.07.2014, 21:09
@suri2411

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.

0

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 ;)