🍮

Windowsの環境変数のパスをつなげるときに気をつけること

に公開

環境

Windows11

起こったこと

Windowsのシステム環境変数のPathが長さ制限で、エラーになってそれ以上パスを追加できなくなりました。

調べると、PathPath1Path2分割して、以下のように、繋げればよいと合ったので、そのとおりにやってのですが、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