🍮
Windowsの環境変数のパスをつなげるときに気をつけること
環境
Windows11
起こったこと
Windowsのシステム環境変数のPathが長さ制限で、エラーになってそれ以上パスを追加できなくなりました。
調べると、PathをPath1とPath2分割して、以下のように、繋げればよいと合ったので、そのとおりにやってのですが、Path1の部分がうまく反映されませんでした。
システム詳細>環境変数のシステム環境変数
コマンドプロンプトで見てみると、以下のようにPath2は展開されるのですが、Path1が展開されずそのまま表示されました。
# コマンドプロンプト
> echo %PATH%
%PATH1%;C:\...
生成AIに聞くと「レジストリエディターを確認して、作成し直したらどう?」などと言われたのでWin + Rで「regedit」を入力して、\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environmentを確認してみる。以下の図のようになっていた。
レジストリエディタのイメージ
原因と対策
ここでPath1の種類がREG_EXPAND_SZになっていることに気づきました。
REG_EXPAND_SZが文字列の中に%Path1%のような展開可能な変数があるときに、選択される種類のようです。確かに、Path1には%System%のようなパスがありました。
そこで、Path1の中の展開可能な変数(%...%)のようなものをすべて、Pathの中に入れてみました。
するとPath1の種類がREG_SZになり、echo %PATH%でPathの中身を見てみても、うまく展開されました。
まとめ
展開される変数(%...%)の中にさらに展開される変数(%...%)がある場合は注意しないといけないと思いました。
Discussion