3つの環境変数を設定し、それらをマシンパスに追加しようとしています。今のところ私のコードは次のようなものです:
setx CATALINA_HOME "C:\Program Files (x86)\Apache Software Foundation\Tomcat 7" /m
setx JRE_HOME "C:\Program Files (x86)\Java\jre7" /m
setx Java_HOME "C:\Program Files (x86)\Java\jdk1.7.0_21" /m
setx PATH "%PATH%;%Java_HOME%\bin;%JRE_HOME%\bin;%CATALINA_HOME%\BIN;" /m
単独で実行した場合の最初の3つは、変数を追加するために正常に機能します。ただし、最後の行では、元のパスの一部が削除され、追加の変数は追加されません。
私が望む結果は、3つの変数を追加し、システム全体のパスを次のようにすることです。
[original path];%Java_HOME%\bin;%JRE_HOME%\bin;%CATALINA_HOME%\BIN;
あなたの問題の一部は、あなたがした後、SETX
がSET
ではないということです-
setx Java_HOME "C:\Program Files (x86)\Java\jdk1.7.0_21" /m
…、コマンドプロンプトのそのインスタンスでは%Java_HOME%
が設定されていません。 %Java_HOME%
などを取得するには、新しいインスタンスを開始する必要があります。 al。、セット。私はあなたが次のようなことをすることをお勧めします
set Java_HOME=C:\Program Files (x86)\Java\jdk1.7.0_21
setx Java_HOME "%Java_HOME%" /m
元のパスの一部を削除する理由がわかりません。 システムパスではなく、ユーザーパス変数にアクセス/変更する 関連する可能性があります。そして、あなたはしたいかもしれません
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v path
ユーザー部分を除く、PATH変数のシステム部分を取得します。
%var%を使用すると、使用時に展開されます。 %var%を含むように変数を設定する場合は、%% var %%と記述する必要があります。
また、レジストリ設定は現在のプロセスでは表示されず、新しいプロセスでのみ表示されることに注意してください。 winpeでは、レジストリ内のこれらの設定が新しいプロセスに渡されることはありませんが、cmd環境はレジストリではなくExplorer環境を取得します。このため、人々はさまざまな環境をいじるユーティリティを作成しました。
現在のcmdセッションへのレジストリを読み取りたい場合は、FrankWestlakeのconset.exeのようなものが必要になる場合があります。
/M
スイッチを早く配置すると、最後に配置するように求められていても、うまくいくことがわかりました。
したがって、たとえば、これは機能します。
setx /M PATH "%PATH%;C:\AddYourPathHere"
しかし、これはしません:
setx PATH "%PATH%;C:\AddYourPathHere" /M