
環境変数の中で環境変数を使用したときに、
こちらの思ったように文字列が展開されません。
例.
システム環境変数
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で質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PayPal 期限切れ メール
-
スマホでしか検索していない商...
-
承っておりません。 ↓ できませ...
-
ネットワークに詳しい方教えて...
-
このPS4の他のユーザーが使って...
-
彼氏のLINEが消えました! 先日...
-
嫌いな人を徹底的にブロックす...
-
2台目のプレステ5について教え...
-
会社のパソコンなんですが、 退...
-
【おねがいです~!だれか教え...
-
PS5のアカウント二つありアカウ...
-
サンダーバードメールのアカウ...
-
高3女子です ローターやバイブ...
-
Wordを開くと、前に編集してい...
-
【大至急】Hellotalk公式からメ...
-
toon blastで、最初から始める...
-
POOLからスマホへ写真を移す手...
-
Yahooアカウントにログインでき...
-
Yahoo IDが使えなくなってしま...
-
エックスビデオに登録してしまった
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ネットワークに詳しい方教えて...
-
2台目のプレステ5について教え...
-
親子で共有していたAppleIDを別...
-
LINEに使用している電話番号を...
-
彼氏のLINEが消えました! 先日...
-
Switchで子供と2人でフォートナ...
-
高3女子です ローターやバイブ...
-
承っておりません。 ↓ できませ...
-
PS4で別アカウントにデータを移...
-
エックスビデオに登録してしまった
-
スマホでしか検索していない商...
-
PS5のアカウント二つありアカウ...
-
Outlookの不要アカウント(受信...
-
スイッチが二台あり、別々のア...
-
ps4で使っているubiアカウント...
-
アカウントに電話番号登録すべ...
-
Thunderbird 開封確認
-
Yahoo IDが使えなくなってしま...
-
サクラサーバーでサーバのコー...
-
Wordを開くと、前に編集してい...
おすすめ情報