Parameterauswertung für Konsolenprogramme

  • Hallo AutoIt'ler!

    Nachdem ich selbst immer wieder kleine Tools benötige die als "Dos-Programm" laufen sollen/müssen und meistens auch noch mit Parameter zu steuern sind, habe ich mir keine kleine Funktion geschrieben die übergeben Argrumente auswertet.

    Im Gunde ist das nicht anders als eine Erleichterung für den Programmier um seine erwarteten Eingaben überprüfen zu lassen.

    Bevor mich jetzt einige steinigen: Ja, ich weiß da sind kleine Funktionen dabei die man so nicht unbedingt braucht (Print, GetTok,...) - man verzeihe mir - ich komme von einer anderen Scriptsprache und habe die paar "Befehle" sehr lieb gewonnen :love:

    Zur Funktion:

    Es muss im Hauptprogramm die Variablen $optionen und $parametersymbol definiert werden. Die Optionen geben an welche Küzel für die Parameter verwendet werden: /s oder /u oder /k ....

    Die Variable $parametersymbol gibt die Markierung an, also das "/". Es kann auch sein das man lieber ein "-" hat oder "*" - ganz nach Geschmack!

    Wenn alles OK ist steht im Array $ret die Ergebnisse. Ansonsten ist $ret kein Array und hat "nur" eine Fehlernummer

    Ich habe viele Bemerkungen in das Script geschieben, so das es (hoffentlich) für alle Nachvollziehbar ist.

    Beispiele aus dem Dos-Fenster:

    pasted-from-clipboard.png


    Feedback ist gewünscht!

    lg

    Racer

  • Beispiele aus dem Dos-Fenster:

    Ich möchte nicht pingelig sein, aber :

    So etwas wie ein DOS-Fenster/eine DOS-Eingabeaufforderung etc. gibt es seit Windows XP nicht mehr ! Was Du meinst, ist die cmd.exe (auch Windows Eingabeaufforderung genannt), nicht wie früher die COMMAND.COM.

    Auszug aus : https://de.wikipedia.org/wiki/Cmd.exe

    Bei der cmd.exe handelt es sich um eine native Win32-Anwendung, daher ist der Begriff DOS hier irreführend. Es wird zwar eine Kommandozeile für DOS-Befehle zur Verfügung gestellt, die selbst allerdings nicht unter DOS als Betriebssystem läuft.

    Falls Du eine echte DOS-Anwendung laufen lassen willst, benötigst Du einen Emulator wie DosBox.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Du hast natürlich recht - es ist keine "Dos" ... aber lustigerweise wissen alle was gemeint ist!

    lg

    Racer

    PS: bei mir ist das sowieso die DOSe :)

  • Ja - so isses. Musashi Du wolltest doch nicht pingelig sein? Warum bist Du es dann??? Wenn schon pingelig dann ist der Satz :

    ....Falls Du eine echte DOS-Anwendung laufen lassen willst, benötigst Du einen Emulator wie DosBox... auch nicht richtig.

    Denn wofür hällst DU cmd exe?

    https://de.wikipedia.org/wiki/Cmd.exe

    Also Racer nettes DOS Tool :) :)

    Gruß

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Musashi Du wolltest doch nicht pingelig sein? Warum bist Du es dann??? Wenn schon pingelig dann ist der Satz :

    ....Falls Du eine echte DOS-Anwendung laufen lassen willst, benötigst Du einen Emulator wie DosBox... auch nicht richtig.

    Dieser Satz ist, da gebe ich dir recht, zu imperativ !

    Unter gewissen Rahmenbedingungen lassen sich auch 16-Bit DOS-Programme mehr oder weniger gut mit neueren Windowsversionen betreiben. Man sollte aber erwähnen, dass die 64-Bit Versionen von Windows keine 16-Bit Programme mehr ausführen - daher mein Hinweis auf den Emulator DosBox. Ich nutze ihn erfolgreich, um alte DOS-Spiele aus der Jugend wieder aufleben zu lassen :P ! Für Interessierte mag folgender Link nützlich sein : http://www.praktiker.at/dwlseidw.htm

    Denn wofür hällst DU cmd exe?

    Für den 32-Bit Kommandozeileninterpreter von Windows.

    Daneben bieten die neueren Windowsversionen (32-Bit) den 16-Bit kompatiblen Ersatzinterpreter COMMAND.COM an.

    @Peter : Hier sollten wir diesen Aspekt der Diskussion aber beenden, sonst geht das endlos so weiter.

    Ich gehe davon aus, dass es Racer um die CMD.EXE geht, nicht um den Betrieb alter 16-Bit Programme.

    In diesem Kontext ist der Begriff DOS-Eingabeaufforderung als Synonym für textbasierte Eingaben zwar immer noch gebräuchlich, aber technisch halt irreführend. Mehr wollte ich mit meinem Beitrag nicht ausdrücken ;).

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • 64 bit Windows ces ce cet :rofl: moi je suis en XP Sp3 :love: :klatschen:

    Gruß

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Feedback ist gewünscht!

    Zuallererst einmal ein großes Lob, für die ausführlichen Kommentare :thumbup: !

    Einen Stern Abzug gibt es für die Rechtschreibung, sowohl im Code als auch im Beitrag. Natürlich unterlaufen jedem mal ein oder zwei Tippfehler, aber hier wäre eine kleine Korrekturlesung vor dem Absenden schon angebracht gewesen :P .

    Bevor mich jetzt einige steinigen: Ja, ich weiß da sind kleine Funktionen dabei die man so nicht unbedingt braucht (Print, GetTok,...) - man verzeihe mir - ich komme von einer anderen Scriptsprache und habe die paar "Befehle" sehr lieb gewonnen

    Das kann ich nachvollziehen, und es wäre, falls Du den Code nur für Dich geschrieben hättest, reine Privatsache. Da Du den Code aber veröffentlichst, möchtest Du sicher, dass ihn andere auch verwenden. In dem Fall machen es diese Pseudobefehle, speziell Einsteigern, nur unnötig schwer, den Code zu verstehen. Ich würde die Vorgehensweise daher noch mal überdenken !

    Den Code selbst habe ich überflogen, und möchte dbzgl. kein Urteil abgeben. Ich habe meine eigenen, bevorzugten Techniken, bei denen ich auch bleiben werde. Möglicherweise können sich andere User dazu detaillierter äußern.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Jetz isses gut :cursing: . Wenn er über Rechtschreibung sprechen will geht er in ein Deutsch Forum.........

    Wenn Du jeden anmachst wegen Tippfehlern, Rechtschreibfehlern, legst Du nur die Hemmschwelle für Beiträge höher. Ist das Dein Ziel?

    Übertreibs nicht!

    Gruß

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Jetz isses gut . Wenn er über Rechtschreibung sprechen will geht er in ein Deutsch Forum.........

    Wenn Du jeden anmachst wegen Tippfehlern, Rechtschreibfehlern, legst Du nur die Hemmschwelle für Beiträge höher. Ist das Dein Ziel?

    Übertreibs nicht!

    Was hast Du denn geraucht ? :S

    So wie ich das sehe, bin ich ja wohl der Einzige, der bisher ein substanzielles Feedback geliefert hat.

    Außerdem habe ich Racer nicht angemacht, sondern ihn lediglich auf die verhältnismäßig große Zahl an Tippfehlern hingewiesen. Das gehört auch zu einem Feedback, da es der Vertrauenswürdigkeit einer Veröffentlichung schaden kann.

    Nur weil Orthographie offensichtlich nicht zu deinen Primärinteressen zählt, muss das ja nicht für andere gelten, oder ? :D

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Ich rauche nicht, ich trinke nicht, ich lüge nur....

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Jetz isses gut :cursing: ....

    Wenn Du jeden anmachst wegen Tippfehlern, Rechtschreibfehlern, legst Du nur die Hemmschwelle für Beiträge höher. Ist das Dein Ziel?

    Übertreibs nicht!

    Es kann aber auch nicht Sinn der Sache sein eine Kultur der Rechtschreib-Schlamperei zu fördern,

    ich meine damit jetzt nicht diesen Beitrag, sondern solche Postings, bei denen der Sinn des Beitrags nur erraten werden kann.

    Sowas ist ein Zeichen von fehlender Wertschätzung gegenüber den anderen, ausserdem haben damit

    User aus nicht deutschsprachigen Ländern grösste Probleme, wenn sie auf einen Translator angewiesen sind.

    Und das lässt sich leicht genug verhindern indem, man seinen Beitrag selbst nochmals durchliest und

    gegebenenfalls eben nochmals editiert.

    Und damit es nicht total off Topic ist, ich glaube auch WindowsXP hatte schon keinen echten DOS-Unterbau mehr,

    da war doch schon bei Windows 95 oder Windows 98 letzte Baustelle.

    Da gab es dann immer diesen anhaltenden Interrupt-Mangel der sich durch Interrupt-Sharing auch nicht immer

    umgehen ließ. Da war dann Kreativität gefragt, ach das waren Zeiten.

    Mfg Tuxedo

    Einmal editiert, zuletzt von Tuxedo (10. November 2017 um 14:13)

  • Hallo Leute!

    Ich dachte nicht das meine kleine Funktion solche Emotionen hervorruft. Das wollte ich nicht damit bezwecken. Es sollte ein kleines Hilfstool (Funktion) sein für Scripter die öfter Kommandozeilen-Programme schreiben und Parameter übergeben.

    Die Grundsatzdiskussion ob es ein DOS-Fenster oder eine Eingabeaufforderung ist hier nicht wirklich angebracht.

    @Musashi: wenn ich Zeit habe werde ich die Funktion überarbeiten und meine "speziellen Pseudobefehle" entfernen. Da bin ich schon bei Dir das es Anfänger etwas schwerer haben könnten.

    Also, alles Cool und eine schöne Woche!

    lg

    Racer

  • Hallo Racer !

    Ich dachte nicht das meine kleine Funktion solche Emotionen hervorruft. Das wollte ich nicht damit bezwecken.

    Zumindest meine Emotionen bewegen sich innerhalb normaler Parameter, da musst Du nicht besorgt sein ;).

    Natürlich wird niemand gerne auf Tippfehler hingewiesen. Du bist aber sicher meiner Meinung, dass eine vernünftige Rechtschreibung deine Veröffentlichung aufwertet, oder ?

    Musashi: wenn ich Zeit habe werde ich die Funktion überarbeiten und meine "speziellen Pseudobefehle" entfernen. Da bin ich schon bei Dir das es Anfänger etwas schwerer haben könnten.

    Gute Idee :thumbup:

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Gute Idee

    Finde ich nicht. Das wurde völlig zu hoch gehängt von den Leuten, die hier geschrieben haben. Aus meiner Sicht, ist es auch falsch.

    Gerade die kleine Hilfsfunktion Print. So eine kleine Optimierung findet sich in ganz vielen Beispielen in der Hilfe. Und man möge sich bitte mal ein beliebiges Skript von Bitnugger anschauen. Wenn man darin so etwas nicht findet, hat man den falschen User gesucht.. ;)

    Ich halte es jedenfalls oft für sinnvoll und verstehe auch nicht, warum das ein Problem sein soll.

    Grüße autoiter

  • Ich halte es jedenfalls oft für sinnvoll und verstehe auch nicht, warum das ein Problem sein soll.

    Ich habe überhaupt kein Problem mit kleinen Hilfsfunktionen :).

    Hier wird aber ein AutoIt-Befehl nur deshalb in eine Funktion geschrieben, um sich über den Funktionsnamen seine eigene Syntax zu schaffen.

    Func print ($text)
    ConsoleWrite ($text & @crlf)
    EndFunc

    Wäre z.B. ein StringFormat enthalten um die Konsolenausgabe zu normieren, würde ich das ja noch verstehen. So aber kann man im Skript auch gleich ConsoleWrite($text & @crlf) statt print($text) schreiben. Welchen Vorteil soll das bringen ?

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Ähm. Das man nicht an vllt. hundert Stellen & @CRLF schreiben muss. Ist doch wohl klar. Ich sehe da wirklich keinen Diskussionsbedarf.

    Wir leben glücklicherweise nicht in Nordkorea, dürfen also dbzgl. unterschiedliche Ansichten vertreten.

    Daher sehe ich auch keinen weiteren Diskussionsbedarf.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."