Twisty Impersonator が答えで言ったことはすべて正しいです。ユーザーパス変数が追加されるという考えが強調されており、その違いの結果には追加の処理が必要だと思います。
パス=%Path%(システム); %Path%(ユーザー)
あなたは、実行可能プログラム(またはのような任意の実行可能スクリプト、実行すると.bat
、.vbs
などを)あなたは完全修飾パスを指定する必要はありません。
たとえば、実行するにはjava
、次のいずれかを入力できます。
C:/Program Files (x86)/Java/jre6/bin/java -version
java.exe -version
java -version
最初の例では、完全修飾パスを使用しています。これは、常にその正確なパスにあるJavaのバージョンを使用します。
2番目の例では、%Path%
環境変数の各ディレクトリを調べて、という名前の実行可能ファイルを探しますjava.exe
。最初に見つかったものを実行し、検索を停止します。上のどこかに名前の付いた2つのファイルがある場合、最初に見つかったファイルのみが使用されます。java.exe
%Path%
3番目の例は、2番目と同様に、にリストされているディレクトリを反復処理し%Path%
ます。さらに、ファイル拡張子が提供されなかったため、%PATHEXT%
環境変数で指定された順序で、実行可能なファイル拡張子のリストがファイルの名前に追加されます。名前のいくつかのファイルがある場合はjava.com
、java.exe
、java.bat
上、等のどこかには%Path%
、最初のものだけをFOUNDが使用されています。
次のバッチファイルを作成することにより、システム上の実行可能なパス拡張子のリストを表示できます。
@echo off
echo %PATHEXT%
pause
私のマシンでは、これらは次のとおりです。
.COM; .EXE; .BAT; .CMD; .VBS; .VBE; .JS; .JSE; .WSF; .WSH; .MSC; .PY
これはどういう意味ですか?
全く対照的その他の環境変数に、ユーザーパスは、システムパスを上書きすることはできません。まったく逆の場合です。上記の例から、Javaのデフォルトバージョンを変更する必要がある場合が多くあります。ただし、システムパスにすでにJavaバージョンがリストされている場合、それは常に最初に見つかるバージョンです。パスは左から右の順序で検索され、ユーザーパスが右側に追加されるためです。 -左側、システムパスがあります。
私はそれについて何ができますか?
システム環境変数にアクセスできない場合、ユーザーパスを使用してシステムパス上のデフォルトプログラムを上書きすることはできません。(実際、この方法でなければなりません。そうしないと、特定のプログラムが正常に動作しなくなり、システムが悪意のあるソフトウェアによって改ざんされる可能性があります。誰も望んでいません。)
代わりに、特定のバージョンを使用する必要がある場合は、完全修飾パスを使用する必要があります。