変数がスペースを含むパスに展開される場合、PATH変数内の環境変数の展開には明確な問題があります。
「OUR_ROOT = c:\ MyRoot」などの独自のシステムレベル変数を作成し、「PATH =;%OUR_ROOT%\ bin;」などのシステムPATHで使用しました。そして、それは「PATH =; c:\ MyRoot \ bin;」に正しく展開されます。これまでのところ問題ありません。
しかし、Windows 7(32ビット)では、製品自体をインストールして、次のようなシステム環境変数を作成しました。
STUDIO_BIN=C:\program files\Company Name\Product Name 10.4\bin
そして、システムのPATH変数に追加しました:
PATH=<other path elements>;%STUDIO_BIN%;<more path elements>
ただし、CMDに表示されるPATH値には「%STUDIO_BIN%;」が含まれていました。展開されたパスではありません。[マイコンピュータ]> [プロパティ]> [詳細設定]> [環境変数]の値も展開されませんでした。つまり、そのディレクトリでDLLを必要とするプログラムを実行できませんでした。
STUDIO_BINを([マイコンピュータ]> [プロパティ]> [詳細設定...]> [環境変数]を使用して)埋め込みスペースなしの名前に変更するだけで:
STUDIO_BIN=C:\ProductName\bin
CMDウィンドウを再起動すると、PATHは次のようになります。
PATH=<other path elements>;C:\ProductName\bin;<more path elements>
別の解決策は、マイコンピュータ>プロパティ>詳細...>環境変数ダイアログを使用して、PATHで使用しているシステム変数を十分に編集することです。「変更」を行うために文字を追加して削除し、OKを実行して、新しいCMDプロンプトを開始しましたが、PATHが正しく展開されませんでした。その後、パスの一部を削除してみましたので、
STUDIO_BIN=C:\Program Files\Company Name
(「製品名10.4」を省略)とlo、そして見よ、次のCMDプロンプトは、適切に展開されたSTUDIO_BINのPATHを示していました!
奇妙なことに、戻って「製品名10.4」をSTUDIO_BINに追加した場合(それをいじり始める前に元々あったすべてのスペースを含む)、PATHはまだ正しく拡張されていました。
明らかに内容が十分に変更されているため、PATH変数は、環境変数ダイアログで機能するための追加の処理を受けます。製品のインストーラーによって変数が追加されたときに行われていない処理(レジストリ内のPATHを直接変更した可能性が高い)。
これもXPの問題であるとほぼ確信しています。新しい開発マシンを組み立てていたので、Windows 7で再登場しました。どうやら、Microsoftによって修正されていないようです。
明らかに、%ProgramFiles%のようなMS定義の変数でさえ、PATHで正しく展開されません。
このページは、コマンドラインまたはバッチファイルを使用してPATHを設定している場合に可能な回答を提供します。(SETの後にコマンド全体を引用符で囲みます。)環境変数を設定するためにインストールした製品がどのインストーラーを使用したかはわかりませんが、スペースを含むパスを適切に拡張するために必要な処理を行ったようです。
要約すると、次のいずれかが可能です。