Variable in andres Script übertragen

  • Hallo!
    Wie kann ich denn den Wert einer globalen Variable in ein anders Script übertragen?
    (z.B. wird dir Variable X in Script A bestimmt und ich möchte genau diesen Variablenwert auch in Script B verwenden!)
    Wär super, wenn mir des jemand kurz sagen könnte ;)

    • Offizieller Beitrag

    mehrere möglichkeiten:
    1. du schreibst es in script A so das er das in einer datei abspeichert, werehnd Script B jede sekunde in die datei guckt
    oder 2. du schreibst scribt B so das es auch per cmdline funktionier, du also nur in script A schreiben musst:

    Code
    Run("ScriptB.exe "&$a)


    scribt b müsste am anfang so aussehen:

    Code
    If $cmdline[0] > 0 Then; checkt ob überhaupt was in der cmdline drinsteht
    	$X = $cmdline[1];x wird als cmdline declarirt! wenn man also "scribtB.exe hallo" startet, wird in der msgbox "hallo" angezeigt!
    Else; wenn nix in der cmdline drin is also man "scriptB.exe" so startet wird x zu -1!
    	$X = "-1"
    EndIf
    MsgBox(0,"",$X);hier wird das ergebnis ausgestrahlt
    $data = """hallo! wenn x = -1 dann wird das hier in der msgbox stehen!"""; wichtig: hier ist ein satz mit leerzeichen also musst du den text in " fassen also "+"" wegen "!? du kannst auch '" machen!
    $data = '"hallo! wenn x = -1 dann wird das hier in der msgbox stehen!"'; also so!
    If $x = "-1" Then RunWait(@ComSpec & ' /c '&@ScriptFullPath&" "&$data, '', @SW_HIDE); hier startet er nochmal mit dem text von $data in $cmdline[1]!
  • Hm, jetzt hab ich nochmal n ähnliches Prob :(...
    Also, ich möchte 2 Variablen und nicht mehr nur eine übertragen. Hab mir des in der Anleitung angeschaut, aber ich versteh nicht, wie des geht :D

    Des muss man irgendwie mit $cmdline[1] und $cmdline[2] machen, aber dass beide Parameter ne Variable sind krieg ich nicht hin.

    Es werden z.B. die Variablen X und Y in Script A bestimmt und die will ich dann in Script B weiterverwenden.

    Wäre cool, wenn mir da wiedermal jemand helfen könnte :)

    • Offizieller Beitrag

    wie sieht die variable denn aus? also enthält sie leerzeichen?
    wenn ja muss du sie in " setzen! Aslo so:

    Code
    $a = '"hallo dies ist ein test"'
    $b = "dies_ist_nur_ein_wort_desswegen_keine_gänsefüschen!"
    Run("ScriptB.exe "&$a&" "&$b)


    oder du machst es mit EnvSet:

    Code
    EnvSet("ToScriptB",$a)
    EnvSet("ToScriptB2",$b)


    und dann liest du es im anderen script so aus:

    Code
    $a = EnvGet("ToScriptB")
    $b = EnvGet("ToScriptB2")


    EnvSet/Get ist eine parameterübergabe ans Betriebsystem und soetwas wie die Zwischenablage nur das es undendlich viele verschiedene davon gibt!ABER:

    Code
    Eine Umgebungsvariable, die so gesedtzt wird, ist nur von Programmen auslesbar, die aus AutoIt heraus gestartet wurden (mittels Run oder RunWait). Sobald AutoIt beendet wird, verlieren die Umgebungsvariablen ihre Gültigkeit.