Umgebungsvariablen

    • Offizieller Beitrag

    Das Thema ist nicht AutoIt spezifisch, sondern generell sehr unklar.

    Ich wollte (hier) durch Setzen von Umgebungsvariablen (SCITE_USERHOME) unterschiedliche Pfade bereitstellen zum Starten verschiedener SciTE-Versionen.

    Das war meine erste intensivere Beschäftigung mit Umgebungsvariablen (bisher hatte ich diese ausschließlich abgefragt). Nun wollte ich diese aber setzen.

    Ergebnis:

    Die geänderten Variablen haben den neuen Wert nur im direkten Kontext des Änderungsprogrammes. D.h.

    VARIABLE Wert: "Alter-Wert"

    - Öffnen 1. Konsole

    set VARIABLE=Neuer-Wert

    - Abfrage in 1. Konsole: set VARIABLE -- Ausgabe: VARIABLE=Neuer-Wert

    - parallel Öffnen 2. Konsole

    - Abfrage in 2. Konsole: set VARIABLE -- Ausgabe: VARIABLE=Alter-Wert

    In AutoIt ist das analog.

    EnvSet("Variable", Wert)

    EnvUpdate()

    EnvGet("Variable")  zeigt den neuen Wert, Abfrage über die CMD bringt aber wieder den alten Wert.

    Wie also werden von Windows diese Variablen gesetzt? Denn wenn ich das händisch über <Systemeigenschaften> <Umgebungsvariablen> durchführe ist es ja möglich.

    :?:

  • Hallo!

    Die Variablen sind hirachisch und werden dann vererbt:

    System -> User -> Prozess

    Beispiel: Ist im System der path definiert und im Userumfeld nicht wird er vererbt. Hier kann ich dann aber als Benutzer etwas verändern das aber nicht zurückgegeben wird ans System.

    Du bist eh am richtigen weg:

    * cmd aufmachen und set a=1 setzten (Der Prozess hat jetzt eine zusätzliche Variable a bekommen mit dem Wert 1)

    * aus der cmd mit start cmd ein weiters Dos-Fenster (ja, ich sag immer noch Dos-Fenster auch wenn es keines mehr ist) aufmachen und Du wirst die Variable A mit dem Wert 1 dort finden (vererbt). Wenn Du diese jetzt veränderst set a=2 denn ist sie nur für diesern Prozess gültig.

    * aus dem ersten cmd wieder ein start cmd machen und die Variable a prüfen. Du wirst feststellen das diese dort den Wert 1 hat

    Warum? Der "Subprozess" liefert das nicht zurück. Meistens ist das gut so, manchmal ärgerlich. Aber stell Dir vor Du könntest als Benutzer den path ändern und das schreibt sich bis zum System zurück. Windows würde w.o. geben....

    lg

    Racer

    • Offizieller Beitrag

    Update:

    Ich habe nun festgestellt, dass eine dauerhafte Änderung der Pfade gar nicht erforderlich ist, wenn Pfad setzen und Programmaufruf im selben Kontext stattfinden.

    Deshalb habe ich mich nun für folgendes Vorgehen entschieden: