Umgebungsvariablen (zB% PATH%) Erweiterungsregeln usw

465
mpag

Ich versuche zu verstehen, ob eine erweiterbare Zeichenfolge in der PathUmgebungsvariablen eines Benutzers ordnungsgemäß erweitert wird.

Da es anscheinend an einer angemessenen Dokumentation auf der MS-Website mangelt ( dies sind die nächsten, die ich finden kann; SE-Threads hier und hier gelten ebenfalls), können meine Fragen (und Beobachtungen) wie folgt kategorisiert werden.

  1. Variablentyp

    • MS-Dokumente, dass es sich um einen String, Expandable String oder Multistring handeln kann.
    • Standard scheint Standard String zu sein.
    • Beim Multistring wird nur der erste String erkannt.
    • Mein System scheint periodisch zu einer Standardzeichenfolge zurückzukehren, nachdem Variablen zuerst (mit festen Werten) aus einer erweiterbaren Zeichenfolge erweitert wurden.
    • Ich bin nicht sicher, ob es Microsoft Updates oder nicht autorisierte Installationsprogramme sind, die den Typ wieder in Standardzeichenfolge ändern.
  2. Umgebungsvariable Expansionsebenen

    • Auf wie viele Schichten der variablen Erweiterung kann ich mich verlassen? Dieser SE-Thread scheint darauf hinzudeuten, dass er nicht vorhersagbar ist.
      • Im Path=%A_ProPath%Moment ist A_ProPath eine weitere erweiterbare Zeichenfolge, die beginnt %_SysPWin%;%_SysPIntel%;%_SysPVSdotNET%;%_SysPPy%;%_SysPPerl%;%_SysPChoc%;%_SysPJava%;%_SysPSQL%;.
      • Wenn ich jedoch innerhalb von% _SysPIntel% auf% _Intel_SW% (C: \ Programme (x86) \ IntelSWTools) verweise, wird dies nicht erweitert.
    • Ich erhielt unterschiedliche Ergebnisse, wenn ich einen Variablentyp auf "erweiterbar" gesetzt hatte, jedoch ohne %var%Referenzen darin oder nur den Variablentyp auf Standardstring setzen. Es scheint, dass Verweise auf Standardzeichenfolgen häufiger als Verweise auf erweiterbare Zeichenfolgen erweitert werden. Warum ist das?
  3. Erweiterungssequenz von erweiterbaren Zeichenketten

    • Die Erweiterung der Variablen ist nicht rekursiv, daher scheint es kein Problem mit zyklischen Verweisen zu geben
    • Die Erweiterung scheint nur in alphabetischer Reihenfolge und nur in einem Durchlauf (pro Ebene: System und dann Benutzer) zu erfolgen.
    • Die Reihenfolge, in der Sie Variablenwerte hinzufügen oder bearbeiten, scheint nicht von Bedeutung zu sein
    • Bei Variablen wird die Groß- und Kleinschreibung nicht berücksichtigt
    • Pathin Ihren Systemvariablen ist das Gleiche wie %PATH%oder %path%in einem Eingabeaufforderungsfenster.
    • Ich weiß nicht, ob sie vor der Alphabetisierung in einen einzigen Fall konvertiert werden.

      1. Ich glaube, ich habe angefangen, _meine Variablennamen abzuleiten, da Werte in alphabetischer Reihenfolge nicht in Path enthalten waren. Dies würde jedoch bedeuten, dass Sie% SystemRoot% oder% WinDir% nicht direkt in einem Pfad verwenden können. Ist das sinnvoll?

      2. Unter der Annahme, dass Umgebungsvariablen in der Reihenfolge ihres alphabetischen Erscheinungsbildes erweitert werden, nehme ich an, dass Umgebungsvariablen die Groß- und Kleinschreibung nicht berücksichtigen. Werden die Umgebungsvariablen beim Sortieren von nicht alphabetischen Zeichen so bewertet, als ob alle Buchstaben in der Großschreibung liegen, und dann mit dem ASCII-Wert verglichen werden (z. B. Perlre [0-9\- _]vor az)? oder vor dem ASCII-Vergleich ( _kommt nach dem Alphabet)?

      3. Was sind die zulässigen Zeichen, die in Variablennamen verwendet werden? Kann ~[]()usw. verwendet werden? ?*!.?

      4. Wenn es eine Systemumgebungsvariable namens PATH und einen Benutzer PATH gibt, der zuerst ausgewertet wird? Kann mein Benutzer PATH auf benutzerdefinierte Variablen auf Systemebene verweisen?

1
In diesem Beitrag werden zu viele Fragen gestellt. Bitte [bearbeiten] Sie Ihre Frage, um sich auf eine einzelne Frage zu konzentrieren, wobei * möglicherweise * eindeutig verwandte Nebenfragen enthalten sind. Sie können auf dieser Site mehrere Fragen stellen und können leicht auf sie verweisen, um den Kontext anzugeben, wenn Sie möchten. Twisty Impersonator vor 5 Jahren 0
(arbeitet jetzt an der Bearbeitung. Entschuldigung für die unvollständige Bearbeitung) mpag vor 5 Jahren 0
Es ist nützlich, Ihre Bearbeitung offline (z. B. in einem Texteditor oder Textverarbeitungsprogramm) durchzuführen und sie anschließend als eine einzige Bearbeitung zu veröffentlichen, wenn Sie fertig sind. (IMO, es ist immer noch unklar und zu breit.) Scott vor 5 Jahren 0

0 Antworten auf die Frage