Windows 7でシステム変数PATHにユーザー定義の環境変数を追加するにはどうすればよいですか?


9

2つのユーザー定義変数があります。

ANT_HOMEを%USERPROFILE%\ Developer \ Tools \ Apache \ Apache Ant \ apache-ant-1.8.2に設定JAVA_HOMEをC:\ Program Files \ Java \ jdk1.6.0_23に設定

そして、それらのパスをシステム変数に追加して、binフォルダー内の実行可能ファイルにアクセスできるようにします。私は試した

PATHは[その他のパス];%ANT_HOME%\ bin;%JAVA_HOME%\ binに設定

ただし、それは機能しません。コマンドプロンプトを開いて%PATH%をエコーすると、ユーザー変数が展開されません。したがって、パスにはリテラル;%ANT_HOME%\ bin;%JAVA_HOME%\ binが表示されます

私の古いWindows XPシステムでこれがうまく機能したことを思い出しているようです。Windows 7でこれを設定するにはどうすればよいですか?


2007年に、Shell32.dllのバグについてのMicrosoftサポート記事を見つけました。ユーザー変数リストにPATH変数を追加し、PATHを%PATH%;%ANT_HOME%\ bin;%JAVA_HOME%\ binに設定して、問題を回避しました。ユーザーだけに設定するのは好きではありませんが、どういうわけか私のシステムはこの古いバグの症状を示しており、他のより良い答えはまだありません。記事は次の場所にあります。support.microsoft.com
Michael Prescott

回答:


5

UPDATE NO.2-さて、実際の質問です。なぜ、ネストされたユーザー作成変数が展開できないのですか?

Windowsの変数展開に関して、いくつかの一般的な問題があります。私はすでに同じ問題に遭遇し、明確で再現可能な状況は見つかりませんでした-展開が失敗する再帰レベルが一貫していない、特殊文字が役割を果たすように見えない、など。

私が見つけた唯一の実行可能な回避策は、再帰レベルごとに変数の再帰レベルを追加することです。つまり、入れ子にしたいすべての変数(PATHからユーザー定義変数への呼び出しを含む)を削除してから、最初からやり直してください。基本的な変数(ANT-HOMEなど)を定義し、コミットし、展開されているかどうかを確認します。拡張されている場合は、次のレベルのコミットに進み、確認します...アイデアがわかります。

更新された回答-CLIとGUIを使用した永続的な環境変数の定義 - 元の回答にスクロールダウン

GUIメソッド:

Windows 7では、METAプロンプトに「system」と入力するだけで、「システム環境変数の編集」というエントリが表示されます。そこから、「環境変数」をクリックします。そこで、システム変数PATH(一番下のリスト)を編集するか、ユーザー環境変数に新しいPATH変数を追加/編集できます。

コマンドライン方式:

環境変数を永続的に変更するには、WindowsコマンドラインでSETXコマンドを使用する必要があります。他のバージョンのWindowsとは異なり、Windows 7に組み込まれています。構文はSETとは大きく異なりますが、強力です。ただし、少し注意する必要があります。SETXで変数をめちゃくちゃにするのは簡単です。

  • デフォルトでは、ユーザー変数を変更します。システムPATH変数とうまく共存するPATHユーザー環境変数を持つことができます。まだ定義していない場合は、次のように入力して定義します。SETX PATH yourpath

  • システム変数PATHに値を追加することもできます。これを行うには、最初に管理者権限でコマンドラインを起動する必要があります。これを行うには、メタ(Windowsの)キー、タイプヒットcmdとヒットCTRL+ SHIFT+をENTERし、UACのダイアログを確認します。

パスに新しい値を追加するには、次のように入力できます

setx path "%path%;yournewpath" /m

その構文に従うことが重要です!最初に%path%を含めない場合、pathの既存の値はすべて失われ、新しいパスのみに置き換えられます。 最後の/ mスイッチは、システム環境で変数を設定します。

新しい変数を使用するには、新しいコマンドラインを起動する必要があることに注意してください。

TechNetにSETXの完全なリファレンスもあります。

OLD ANSWER コマンドSETは、現在のコマンドラインセッションの間のみ変数を更新します。

変数に値を追加するための正しい構文は、「set [variable] =%[variable]%; [new value]」です。

等号の左側では、パーセント記号を省略しなければならないことに注意してください。

ソース:Windows ServerのTechNetコマンドラインリファレンス


1
細かいご対応ありがとうございます。個人的には、チームとのコミュニケーションが容易になると思うので、常にGUI方式を好んでいます。わかりやすくするために、元の投稿で発生している問題を強調表示しました。ユーザー変数は、Windows XPとは異なり、Windows 7では拡張されません。これは機能しなくなりましたか、それとも通常の動作をブロックしている可能性があるセキュリティやその他のシステム管理者設定を調査する必要がありますか?
Michael Prescott、2011年

これは、「あなたは完全に問題の外にいる」という非常に良い方法です;)
Tobias Plutat '21 / 01/05

...そして、実際の質問に対する私の2セント。最新の回答の編集を参照してください。
Tobias Plutat、2011年

1

2007年に遡るMicrosoftサポート記事— 番号329308 —は、この問題の原因であるShell32.dllのバグについて説明しています。解決策は、次のようにPATH設定されているユーザー変数リストに変数を追加することです

%ANT_HOME%\bin;%JAVA_HOME%\bin

これは問題を回避しました。ユーザーだけに設定するのは好きではありませんが、どういうわけか私のシステムはこの古いバグの症状を示しており、他のより良い答えはまだありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.