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コマンドラインリファレンス