2017-05-10 10 views
0

Ich möchte die Path-Umgebungsvariable abfragen, ohne die anderen darin enthaltenen Variablen zu bewerten.Umgebungsvariable abfragen, ohne sie zu bewerten

z.

variable1 = c:\abc 
variable2 = c:\def 
variable3 = c:\ghi 
JAVA_HOME = c:\java 
Path = c:\jkl;%variable1%;%variable2%;%variable3%;%JAVA_HOME% 

Ich möchte Pfad abzufragen und

c erhalten: \ jkl;% variable1%;% variable2%;% Variable3%;% JAVA_HOME%

NICHT

c: \ jkl; c: \ abc; c: \ def; c: \ ghi; c: \ java

Der Grund, warum?

In meinem groovy Skript (die Shell-Befehle ausgeführt wird), mag ich, wenn% variable1% überprüfen (oder es ist Wert) wird in Pfad festgelegt wurde. Wenn nicht, möchte ich es hinzufügen. Ich sollte Folgendes richtig machen?

setx path "%path%;%variable1%" /m 

Eigentlich nicht, denn dies wird c setzt in Pfad: \ jkl; c: \ def; c: \ ghi; c: \ java;% variable1%

Spätere Änderungen an JAVA_HOME wird nicht länger im Pfad reflektiert werden. Alle anderen referenzierten Variablen in Path, die nichts mit meinem Programm zu tun haben, werden geändert. Dies stellt möglicherweise kein Problem dar, kann sich jedoch auf andere Programme auswirken, die von anderen Personen ausgeführt werden, wenn sie sich dazu entschließen, etwas zu ändern, und erwarten, dass Path ihre Änderungen widerspiegelt.

Ich versuche das in Windows im Moment zu lösen, muss aber irgendwann auch etwas ähnliches in Linux machen. Ich verwende derzeit Win 7, aber dies könnte von einer Vielzahl von Betriebssystemen ausgeführt werden.

+0

Sobald die Pfadvariable zugewiesen wurde, weiß sie nicht, dass sie aus diesen anderen Variablen aufgebaut wurde. – khelwood

+0

Verwenden Sie nie setx.exe, um 'PATH' mit dem aktuellen'% PATH% '- Wert zu ändern. Windows unterteilt 'PATH' in Benutzer- und Maschinenkomponenten. Wenn Sie setx.exe mit '% PATH%' verwenden, haben Sie diese Unterscheidung einfach abgeschafft und die Dinge in Unordnung gebracht. – eryksun

+0

@eryksun Ja, ich wusste davon, aber war bereit zu akzeptieren, da die Benutzervariable für Path etwas war, auf das ich mich verlassen konnte. Sonst wäre es schlecht. Wie bei der anderen Antwort, fange ich an, mich damit abzufinden, dass das Automatisieren dessen, was ich tun möchte, nicht möglich ist. –

Antwort

1

Ich glaube nicht, dass das möglich ist. Wenn die Variable festgelegt ist, wird sie erweitert. Sie müssten wahrscheinlich in der Windows-Registrierung nachschauen, um den nicht erweiterten Wert zu erhalten, und werden auf * nix ziemlich verloren sein, da Sie nicht wissen, wo es gesetzt wird. Eigentlich wissen Sie auch nicht in Windows, jemand kann eine Shell öffnen, die Variable auf einen anderen Pfad setzen und dann Ihr Programm starten, dann wäre der Registrierungswert veraltet.

Verwandte Themen