externe Variablen Übergabe

  • Guten Morgen zusammen,

    folgendes Problem habe ich momentan, und weiß momentan nicht so genau, wie man das angehen soll.

    Ich soll eine AutoIT.exe schreiben, welche Ihrer Parameter von einem Javaprogramm erhält. Ebenso sollen später von der AutoIT.exe Parameter an die Java Anwendung übergeben werden.

    Wie geht Ihr sowas normal an. Ich dachte an eine ini Datei als Übermittler, aber vielleicht gibt es hier ja auch was anderes.

    Bin über verschiedene Lösungen gespannt :P

    Vielleicht sollte man noch beachten, das die Variablen, welche übergeben werden sich in der Anzahl und in der Beschreibung ändern können.

    Hier mal ein Beispiel:

    Code
    Var1=1
    Var2=2
    Var3=3

    und später vielleicht solch eine Reihenfolge

    Code
    Var1=1
    VarTest=Test
    Var2=bubu
    Var3=3
    VarTest17=schnickschnack
    Var4=4

    Ist hier $CmdLine dann überhaupt angebracht ? Oder soll man hier die Anzahl der Variablen von der EXE selbst ermitteln lassen ?

    also recht chaotisch ...

    Gruss Hassan

    Einmal editiert, zuletzt von HassanMullah (15. November 2010 um 12:20)

  • Soll das zur Laufzeit übergeben werden die Paramter oder immer nur beim Starten?

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • In dem Fall einfach nur $CmdLine verwenden. Sprich von Java aus die Autoitprogramm mit Paramter aufrufen und dann in Autoit mit $CmdLine auslesen. Und da in $CmdLine[0] die Anzahl der übergebene Paramter steht ist auch Problemlos eine variabe Anzahl an Paramtern möglich.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Hallo Chip,

    soweit habe ich das auch verstanden. Es ergeben sich für mich jedoch folgende Probleme, die ich noch nicht "technisch" zu meistern verstehe.

    Ich arbeite sehr oft mit WISE Installations System. Hier gibt es auch die Möglichkeit mit einer Variablen "CMDLINE" zu arbeiten. Allerdings wird hierbei ALLES in eine Variable geschrieben. Hier mal ein Bespiel:

    Code
    anwendung.exe /S install nojre noreboot

    und

    Code
    anwendung.exe /S bubuinstall_wassollichschreibennojre-noreboot

    erzeugen das gleich Ergebnis, da ich in einer IF-Schleife nach "CONTAIN" abfragen kann.

    D.h.

    Code
    If %cmdline% contain nojre, dann "machwas" ...

    Bei AutoIT habe ich mit $Cmdline[0] die Anzahl der Variablen und ab $Cmdline[1] die Werte.

    Da ich mich mit Arrays noch nicht auskenne - und mir auch momentan die Zeit zum Einarbeiten fehlt - suche ich hier eine ähnliche Möglichkeit wie oben beschrieben.

    Gibt es sowas mit AutoIT ??

    2. Frage ?

    Wie pipe ich meine Variablen in Richtung Java wieder raus ? Gibt es hier zur ini Datei noch Alternativen ? Registrierung möchte ich ungern, wegen eventuellen Berechtigungsproblemen, nehmen.

    • Offizieller Beitrag

    Bei AutoIT habe ich mit $Cmdline[0] die Anzahl der Variablen und ab $Cmdline[1] die Werte.

    Da ich mich mit Arrays noch nicht auskenne - und mir auch momentan die Zeit zum Einarbeiten fehlt - suche ich hier eine ähnliche Möglichkeit wie oben beschrieben.

    Gibt es sowas mit AutoIT ??


    Einfach in SciTE eintippen: cmdlineswitch und Leertaste, dann erhältst du folgenden, fertigen Skriptblock

    Spoiler anzeigen
    [autoit]

    #region - CmdlineSwitch
    If $CMDLINE[0] Then
    For $i = 1 To $CMDLINE[0]
    Switch $CMDLINE[$i]
    Case '/?'
    MsgBox(0x40000, @ScriptName & ' Help', _
    'Switches are:' & @CRLF _
    & @CRLF & '/extract' _
    & @CRLF & @TAB & 'Extract files to current directory' _
    & @CRLF & '/x' _
    & @CRLF & @TAB & '' _
    & @CRLF & '/x' _
    & @CRLF & @TAB & '' _
    & @CRLF & '/x' _
    & @CRLF & @TAB & '' _
    & @CRLF & '/x' _
    & @CRLF & @TAB & '')
    Exit
    Case '/extract'
    FileInstall('?', @ScriptDir & '\')
    Exit
    Case '/x'
    Case '/x'
    Case '/x'
    Case '/x'
    Case Else
    MsgBox(0x40000, 'Incorrect switch used', _
    'Command used:' & @CRLF & $CMDLINERAW & @CRLF & _
    @CRLF & 'Use /? for the switches available.')
    Exit
    EndSwitch
    Next
    EndIf
    #endregion

    [/autoit]

    Kannst du dann nach deinen Parametern anpassen.

    Wegen der Übergabe zurück aus AutoIt: Ich finde INI sehr praktisch und verwende diese fast ausschließlich. Es scheint sich irgendwie der Gedanke breit zu machen, INIs wären uncool oder so. :wacko: Kann ich nicht nachvollziehen. Sofern die zu speichernde Datenmenge nicht das Limit einer INI sprengt, ist diese eine super Sache.

  • Zitat

    Sofern die zu speichernde Datenmenge nicht das Limit einer INI sprengt, ist diese eine super Sache

    Da kann ich mich nur anschließen !!

    Ich werde mir die Vorschläge mal anschauen. Eventuell melde ich mich nochmals.

    An dieser Stelle :thumbup: für Eure Hilfe

    Gruss Hassan