Alles, was Twisty Impersonator in seiner Antwort sagte , ist richtig. Die Idee, dass die Benutzerpfadvariable angehängt wird, wurde hervorgehoben, und ich glaube, dass die Konsequenzen dieses Unterschieds eine zusätzliche Behandlung erfordern.
Pfad =% Pfad% (System); % Path% (Benutzer)
Wenn Sie ein ausführbares Programm (oder ein ausführbares Skript, z. B. usw.) ausführen .bat
, .vbs
müssen Sie nicht den vollständig qualifizierten Pfad angeben.
Zum Ausführen java
können Sie beispielsweise Folgendes eingeben:
C:/Program Files (x86)/Java/jre6/bin/java -version
java.exe -version
java -version
Das erste Beispiel verwendet einen vollständig qualifizierten Pfad. Dabei wird immer die Java-Version verwendet, die genau diesem Pfad entspricht.
Das zweite Beispiel durchsucht jedes Verzeichnis in der %Path%
Umgebungsvariablen nach einer ausführbaren Datei mit dem Namen java.exe
. Es wird das allererste ausgeführt, das gefunden wird, und die Suche wird beendet. Wenn es zwei Dateien gibt, die java.exe
irgendwo auf der benannt sind %Path%
, wird nur die erste gefundene verwendet.
Das dritte Beispiel durchläuft wie das zweite die Verzeichnisse in der Liste %Path%
. Da keine Dateierweiterung angegeben wurde, wird außerdem eine Liste der ausführbaren Dateierweiterungen in der in der %PATHEXT%
Umgebungsvariablen angegebenen Reihenfolge an den Namen der Datei angehängt . Wenn es mehrere Dateien mit dem Namen sind java.com
, java.exe
, java.bat
etc. irgendwo auf der %Path%
nur die erste gefundene verwendet wird.
Sie können die Liste der ausführbaren Pfaderweiterungen auf Ihrem System anzeigen, indem Sie die folgende Batchdatei erstellen:
@echo off
echo %PATHEXT%
pause
Auf meinem Computer sind dies:
.COM; .EXE; .BAT; .CMD; .VBS; .VBE; .JS; .JSE; .WSF; .WSH; .MSC; .PY
Was bedeutet das alles?
Im Gegensatz zu anderen Umgebungsvariablen können Sie mit dem Benutzerpfad den Systempfad nicht überschreiben. Das genaue Gegenteil ist der Fall. Anhand der obigen Beispiele kann es vorkommen, dass Sie die Standardversion von Java ändern müssen. Wenn jedoch bereits eine Java-Version im Systempfad aufgeführt ist, wird diese Version IMMER zuerst gefunden, da der Pfad in der angegebenen Reihenfolge von links nach rechts durchsucht und der Benutzerpfad rechts angehängt wird -hand side, mit dem Systempfad auf der linken Seite.
Was kann ich tun?
Wenn Sie keinen Zugriff auf Systemumgebungsvariablen haben, können Sie Standardprogramme im Systempfad nicht über den Benutzerpfad überschreiben. (In der Tat muss es so sein, oder bestimmte Programme würden nicht mehr richtig funktionieren, und es würde Ihr System für Manipulationen durch bösartige Software öffnen. Niemand will das.)
Stattdessen müssen Sie einen vollständig qualifizierten Pfad verwenden, wenn Sie eine bestimmte Version verwenden müssen.