環境変数の中で環境変数を使用したときに、
こちらの思ったように文字列が展開されません。
例.
システム環境変数
SystemDrive=C:
WORK_PATH=%SYSTEMDRIVE%\temp
PATH=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem
ユーザー環境変数
PATH=%WORK_PATH%;%PATH%
こんな感じでセットされている場合、
コマンドプロンプトでset PATHした場合の結果が異なります。
Vistaでは C:\temp;C:\WINDOWS~ と展開されますが、
Windows XP環境では %SYSTEMDRIVE%\temp;C:\WINDOWS~ と、
%SYSTEMDRIVE%の部分がそのままになってしまいます。
Windowsの環境変数には2種類の属性があり、
上記の環境変数を登録する際は"展開可能"属性にしました。
またレジストリの"Command Processor\EnableExtensions"
も1になっていることを確認しています。
ちなみにset WORK_PATHとしたときは、
両方の環境で C:\temp と表示されることから、
環境変数の再帰展開がうまく機能していないと思われます。
XP環境でもVista環境と同じように環境変数の再帰展開をすることは可能でしょうか?
No.2ベストアンサー
- 回答日時:
補足によると、「ユーザー環境変数側に設定した」とのことなので、改めて、検証してみました。
システム側、またはシステム側&ユーザー側両方に、
Work_Path=%SystemDrive%\Temp
を設定した場合には、
Path=C:\Temp;C:\WINDOWS\system32;C:\WINDOWS・・・・
と正常に展開されます。
ユーザー側にのみ設定した場合には、
Path=%Work_Path%;C:\WINDOWS\system32;C:\WINDOWS・・・・
と展開されない形で表示されました。
しかし、私の環境でユーザー環境変数同士で正常に展開されているものがあるので、「ひょっとしてアルファベット順?」と、
Pass=%SystemDrive%\Temp
Path=%Pass%;%Path%;
を設定してみた所、
Path=C:\Temp;C:\WINDOWS\system32;C:\WINDOWS・・・・
と正常に展開されました。
どうやら、ユーザー環境変数同士の場合、
アルファベット順に展開していって、展開できないものはそのまま
ということなのではないでしょうか?
Vista環境が無いので確認できませんが、Vistaでユーザー環境同士の展開が正常に行われるとしたら、すべての展開が終わるまでループさせているのではないかと思います。
環境変数の展開の順番は、
システム環境変数 -> ユーザー環境変数で
それぞれアルファベット順に行っているようですね。
非常に勉強になりました。
展開順を考慮して変数を定義することにします。
ちょっと検索してみたのですが、ネット上に全然情報がないことに驚きました。
No.1
- 回答日時:
今、手元にXP環境が無いので、2000 ServerとServer 2003で確認しましたが、ご質問のような再帰展開の不具合は発生しませんでした。
ご質問のように「コマンドプロンプト」で
Set Path
を実行しても、システム環境変数側の設定が表示されるのみで、ユーザー環境変数側の設定は表示されませんので、ユーザー環境変数側を
UserPath=%Work_Path%;%Path%
として実行してみました。
その結果、まず、システム環境変数側に設定した
Work_Path=%SystemDrive%\Temp
が、"再起動後"でないと「コマンドプロンプト」上に表示されませんでした。(『システムのプロパティ』のシステム環境変数の一覧には表示されませんが、"SystemDrive=C:"は元々、システムインストール時に自動的に設定されているので表示されます。)
再起動後の「コマンドプロンプト」上では、正常に、
UserPath=C:\Temp;C:\WINDOWS\system32;C:\WINDOWS;・・・・
と再起展開されました。
>またレジストリの"Command Processor\EnableExtensions"も1になっていることを確認しています。
レジストリに同じ"EnableExtensions"が複数箇所あるのをご存知でしょうか?
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
EnableExtensions REG_DWORD 0x00000001
HKEY_CURRENT_USER\Software\Microsoft\Command Processor
EnableExtensions REG_DWORD 0x00000001
両方の設定が異なる場合には、ユーザー側の設定が優先されます。
この回答への補足
>今、手元にXP環境が無いので、2000 ServerとServer 2003で確認しましたが、ご質問のような再帰展開の不具合は発生しませんでした。
>
>ご質問のように「コマンドプロンプト」で
>Set Path
>を実行しても、システム環境変数側の設定が表示されるのみで、
この点についてですが、
set PATHとした場合、システム環境変数とユーザー環境変数の両方が表示されないでしょうか?
>その結果、まず、システム環境変数側に設定した
>Work_Path=%SystemDrive%\Temp
>が、"再起動後"でないと「コマンドプロンプト」上に表示されませんでした。
ここは私の書き間違いでした。
おっしゃるとおりシステム環境変数に登録した場合は、
再起動後でないと反映されません。
実際にはユーザー環境変数に登録していました。
その場合、コマンドプロンプトの再起動のみで反映されます。
>再起動後の「コマンドプロンプト」上では、正常に、
>UserPath=C:\Temp;C:\WINDOWS\system32;C:\WINDOWS;・・・・
>と再起展開されました。
なるほど。Windows 2000/2003 Serverでは大丈夫なのですね。
こちらはXP SP2をインストールした2台のPCで確認したのですが、
両方ともダメでした。
>レジストリに同じ"EnableExtensions"が複数箇所あるのをご存知でしょうか?
はい。全ての項目で1になっているのを確認済みです。
古いシェルで動かないのだったら理由は理解できるのですが、
"XPのみ"となるとちょっと気になりますね。
もう少し調べてみたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Pythonの作業環境・作業フォルダの迅速な設定・指定方法 3 2022/04/01 07:55
- ルーター・ネットワーク機器 通信量や通信量による影響を計算し想定できますか 3 2023/01/13 09:07
- その他(プログラミング・Web制作) ログインシェル時のSHELL環境変数 1 2022/06/08 19:21
- サーバー Windows2019CALとRDS CALについて 1 2022/06/19 13:48
- ソフトウェア 移行PCにDockerがインストールされていても各種開発環境のアプリはインストールが必要? 2 2023/05/21 21:53
- Windows 10 pathが通らない 2 2023/03/27 11:28
- UNIX・Linux WSL+Dockerでpython実行環境構築について 3 2023/05/05 17:03
- 賃貸マンション・賃貸アパート 戸建て住宅(持ち家)と集合住宅(賃貸) 10 2023/06/23 11:16
- フリーソフト テキストエディア oedit の環境設定(初期設定)ファイルはどこ? 1 2022/11/18 15:40
- 一眼レフカメラ 「Imaging Edge」を手動起動せず、ARWファイルを最高画質JPEGへ変換する方法は? 2 2022/08/05 11:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ネットワークに詳しい方教えて...
-
Fortniteについてです 僕は今ま...
-
XFLAG、IDに登録済みメールアド...
-
Yahoo IDが使えなくなってしま...
-
高3女子です ローターやバイブ...
-
zoomで無料登録なのに「プロユ...
-
Thunderbird 開封確認
-
アウトルックの送信ボタンが押...
-
Yahooアカウントにログインでき...
-
メールの信頼性?
-
承っておりません。 ↓ できませ...
-
ヤフーアカウントについての質...
-
<ACCESS>別テーブルのレコー...
-
このアプリは、何回通報された...
-
小説家になろう、カクヨムなど...
-
楽天ペイを複数端末で使用でき...
-
docomoのスマホとタブレットを...
-
質問なんですが、、前の携帯でI...
-
WhatsAppというアプリを消した...
-
PayPal 期限切れ メール
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Fortniteについてです 僕は今ま...
-
Yahoo IDが使えなくなってしま...
-
高3女子です ローターやバイブ...
-
ネットワークに詳しい方教えて...
-
学校のタブレット
-
親子で共有していたAppleIDを別...
-
PS4から5にデータ移行しようと...
-
質問なんですが、、前の携帯でI...
-
この電話番号は、既に何度も確...
-
プレステ5でのEAアカウントの作...
-
Thunderbird 開封確認
-
フォートナイトが出来ない 仕様...
-
Yahooアカウントにログインでき...
-
ヤフーアカウントについての質...
-
LINEに使用している電話番号を...
-
どうしていけないのでしょうか?
-
Yahoo!でログインしようとする...
-
楽天ペイを複数端末で使用でき...
-
XFLAG、IDに登録済みメールアド...
-
ps4でpsnに登録しようとしたら...
おすすめ情報