Windowsumgebungsvariablen setzen

  • Hallo,

    ich bin gerade am Austesten was mit AutoIt so möglich ist.
    Ich möchte damit jetzt alte Batchdateien mit denen ich temporär Umgebungsvariablen setze durch ein AutoIT-Script ersetzen. Die Werte lese ich vorher aus einer INI-Datei ein.
    Die Variablen sollen nach Ablauf des Scriptes für ein anderes Programm weiterhin gültig bleiben.

    In den Batchdateien geht das mit dem altbewährten SET-Befehl (SET Variable = WERT)
    Mit AutoIT bekomme ich das jedoch irgendwie nicht realisiert.
    Die Variable sollte ja anschließend im DOS-Fenster mit SET angezeigt werden.

    Mit folgender Funktion habe ich schon die unterschiedlichsten Varianten durchprobiert, leider ohne Erfolg.

    Func _SETENV($Key,$Val)
    RunWait(@ComSpec & ' /c set '&$Key&' = '&$Val, '', @SW_HIDE)
    Run("cmd /C set WERT = Test1", "", @SW_HIDE)
    Run("cmd /C set " & $Key & " = " & $Val & "", "", @SW_HIDE)
    EndFunc

    Kann mir jemand weiterhelfen ?

  • EnvSet ...

    ... Leider nicht, habe ich auch schon getestet.
    Nach Ablauf des Scriptes (und auch bei aktivem Script) stehen die Variablen nicht dem System zur Verfügung.

    Siehe DOS-Fenster >> SET

    Ich benötige die Umgebungsvariablen nicht für ein AutoIT-Script sondern für ein externes Programm

  • Hab' mal etwas in anderen Foren nach meinem Problem gestöbert.
    Und siehe da, es gibt eine Lösung:

    _SETENV("Testvariable=Wert")

    Func _SETENV ($nameandvalue)
    $name=stringmid($nameandvalue,1,StringInStr ( $nameandvalue, "=",1)-1)
    $value=stringmid($nameandvalue,StringInStr ( $nameandvalue, "=",1)+1,256)
    RegWrite("HKEY_CURRENT_USER\Environment", $name, "REG_EXPAND_SZ", $value)
    EnvUpdate ( )
    EndFunc

    Mit SET in der DOS-Box wird jetzt auch "Testvariable=Wert" angezeigt.


    PS:
    Hätte man sich mal mehr mit der Registry auseinandergesetzt, hätte man auch selber drauf kommen können!

    • Offizieller Beitrag

    Hallo!

    Ich versuche mal zu erklären warum deine Version nicht funktioniert.

    Wenn du in einem DOS-Fenster eine Variable setzt gilt die nur so lange bis das Fenster wieder geschlossen wird, deshalb ist es in Batch-Dateien kein Problem solche Variablen zu setzten. Wenn du nun in AutoIt den RUN-Befehl verwendest wird durch den RUN-Befehl ein DOS-Fenster geöffnet und nach der Ausführung wieder geschlossen, d.h. die Variable wird zwar gesetzt aber danach gleich wieder gelöscht da das DOS-Fenster ja wieder geschlossen wird.

  • es gibt da nen MS-Tool namens pathman.exe aus einem ResourceKit.
    Damit kannst Du auch dauerhaft Variablen setzen.

    Einmal editiert, zuletzt von jonk (24. Oktober 2006 um 19:06)