Kommandozeile holen



  • Hi,

    bei der Main-Methode bekomme ich ja als Argument die Kommandozeile. Kann ich die auch nachträglich irgendwie bekommen? Alá GetCommandLine?

    Viele Grüße



  • Environment.CommandLine



  • ist aber doof, da hier kein Array ist, sondern nur der String 😞



  • Na verwende doch string.Split zum aufteilen



  • Knuddlbaer schrieb:

    Na verwende doch string.Split zum aufteilen

    soll ein witz sein, ne? nach was soll er denn spliten? leerzeichen?!



  • Ja, nach was denn sonst ? Was meinst denn nach was die Arrays aufgeteilt sind die Du in der Main übergeben bekommst ?

    WEnn Du fertig bist mit lachen kannst Du ja aber auch einfach in die MSDN schauen, da findest Du an sich die Informationen zu.



  • Knuddlbaer schrieb:

    Ja, nach was denn sonst ? Was meinst denn nach was die Arrays aufgeteilt sind die Du in der Main übergeben bekommst ?

    WEnn Du fertig bist mit lachen kannst Du ja aber auch einfach in die MSDN schauen, da findest Du an sich die Informationen zu.

    man merkt du hast noch nie richtig mit ner kommandozeile gearbeitet. man kann doch nicht absolut idiotisch alles nach leerzeichen splitten! Wo sind die Strings? Parameter? Escapesequenzen?

    Sorry, aber wenn man bisher nur mal doof etwas benutzt hat ohne sich damit auseinander gesetzt zu haben, sollte man es doch besser sein lassen solche Ratschläge zu geben. Nach Leerzeichen splitten - wasn Witz.

    Ich geh mir mal in nem anderen Board etwas kompetentere Hilfe holen.



  • Tyria schrieb:

    ...man merkt du hast noch nie richtig mit ner kommandozeile gearbeitet. man kann doch nicht absolut idiotisch alles nach leerzeichen splitten! Wo sind die Strings? Parameter? Escapesequenzen?

    Eine Typische Kommandozeile ist z.B.:

    ipconfig /renew /all
    

    In den Argumenten der Kommandozeile wie sie C# und andere Sprachen verwenden steht dann als Sting "/renew" "/all". Das einzige was IMHO gegen ein reines Splitten der Komandozeile spricht sind übergaben die selbst wieder in Hochkommata stehen (sprich die Leerzeichen enthalten können aber dennoch ein Argument darstellen).

    Was daran Parameter was Texte etc. sind hängt wird jedoch nicht unterschiedlich behandelt. Du musst in deinen Programm entscheiden wie du z.B. Einträge ala "m", "/m", "-m" oder ähnliches interpretierst.

    Also grob gesagt: Ja, man sollte vielleicht nicht ganz blind nach Strings splitten, aber deine Reaktion ist auch nicht das Wahre und deutet darauf das du nicht besser als deine Beleidigungen bist. Vielleicht solltest du neben kompetenter Hilfe dir in einen Forum auch mal den Begriff soziale Kompetenz erklären lassen.

    Edit: Und einen weiteren Nachtrag... wenn man z.B. in der Kommandozeile unter Windows ein "cd <Verzeichnis> macht, und dort mit Leerzeichen in Verzeichnissen arbeitet, muß imho cd diese Leerzeichen richtig interpretieren...

    Warum?

    cd Miktex 2.7
    ==> Funktioniert (Verzeichnis heißt "Miketex 2.7"
    rename Miketex 2.7 Miketex 2.8
    ==> Liefert wiederum einen Syntaxfehler
    Und del interpretiert z.B. auch nur den ersten Teil wenn leerzeichen dazwischen sind.

    cu André



  • Sorry, aber wenn man bisher nur mal doof etwas benutzt hat ohne sich damit auseinander gesetzt zu haben, sollte man es doch besser sein lassen solche Ratschläge zu geben. Nach Leerzeichen splitten - wasn Witz.

    Die wichtigste Information hast Du erhalten.

    Environment.CommandLine

    Es steht Deinem eigenen Geist frei einfach mal nach Commandline Parser zu suchen .
    Wenn man sich dann nicht jede Lösung als Copy & Paste Lösung auf dem silbernen Tablett servieren lässt, könnte man ja auch auf die Idee kommen die vorgeparsten Elemente aus der Main in eine Liste oder einem Array abzulegen.

    Hierzu müsste man aber mit der Programmiersprache mehr machen als diese nur doof anzuwenden. Wenn man aus der Situation heraus nur auf Unhöflichkeiten kommt, sollte man das Programmieren vielleicht lassen.

    Dabei liegt die Lösung doch so nah:

    static class Program
        {
            public static string[] args = null;
            /// <summary>
            /// Der Haupteinstiegspunkt für die Anwendung.
            /// </summary>
            [STAThread]
            static void Main(string[] args)
            {
                Program.args = args;
    
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
        }
    }
    
    private void button1_Click(object sender, EventArgs e)
            {
                foreach (string t in Program.args)
                    MessageBox.Show(t);
            }
    

    Dafür müsste man aber etwas ganz entscheidendes machen: Nachdenken. 🙄

    P.s.: Parameter kenne ich zu genüge durch die Administration von Linuxservern und Perlscripten. Und ich denke nicht, das Du in args[] die Parameter alle so bekommst wie man es bei umfangreichen Parametern benötigen würde. (Sofern Du diese denn wirklich ernsthaft einsetzt.)



  • Aber was Wichtiges hast Du noch vergessen Knuddlbaer.
    Damit das wirklich funktioniert.

    Tyria.SwitchOnBrain = true;
    

    Der HelferXXXL



  • HelferXXXL schrieb:

    Aber was Wichtiges hast Du noch vergessen Knuddlbaer.
    Damit das wirklich funktioniert.

    Tyria.SwitchOnBrain = true;
    

    Runtime schrieb:

    System.NotSupportedException was unhandled
    Message="No brain"


Log in to reply