ユーザー固有の環境変数とは別にグローバル環境変数をリストする方法は?


13

Windows(バージョン10など)では、次のコマンドを使用して環境変数を一覧表示できます

set

すべてのユーザーで同じである環境変数のみ、または現在のユーザーまたはセッションである環境変数のみをどのようにリストしますか?

回答:


17

物事は、マイクロソフトが時々見かけるよりも少し複雑です。

環境変数の多くはレジストリに格納されています。つまり、reg次のコマンドを使用してクエリを実行できます

すべてのユーザーに共通

reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"

現在のユーザーセッションに固有

reg query HKCU\Environment
reg query "HKCU\Volatile Environment"

ユーザーが設定

setx variable valueコマンドを使用して独自の環境変数を永続的に設定した場合、それはレジストリに保存されますが、すぐには利用できません。

C:\>setx test removeme

SUCCESS: Specified value was saved.

C:\>reg query "HKCU\Environment"

HKEY_CURRENT_USER\Environment
    Path    REG_EXPAND_SZ    %USERPROFILE%\AppData\Local\Microsoft\WindowsApps;
    TEMP    REG_EXPAND_SZ    %USERPROFILE%\AppData\Local\Temp
    TMP    REG_EXPAND_SZ    %USERPROFILE%\AppData\Local\Temp
    test    REG_SZ    removeme

set variable=valueコマンドを使用すると、変数はすぐに使用できますが、レジストリには保存されません。regコマンドでそれらを一覧表示することはできませんが、で表示されsetます。これらの一時的な環境変数は、コマンドプロンプトセッションを終了した後は保持されません。

動的環境変数

この方法でレジストリに格納されない環境変数のように機能する構成体があります。例えば:

echo %TIME%

1
単なる好奇心:以前にレジストリに追加された変数を更新することは可能ですか?たとえばsetx test removemeset test %test%すべての変数をシンプルなリストに含めることができるように何かをset?コマンド/バッチスクリプトを実装して、要求に応じてそれらすべてを明示的にすることは可能だと思っていました...
Hastur

@Hastur:はい、それは新しい変数をすぐに利用可能で永続的なものにするのに役立ちます。
RedGrittyBrick 2017

@hastur @RedGrittyBrick-可能ですが、Windows cmdのワンライナーではありません。refreshenv.cmd
Chocolatey

SETコマンドは、動的な環境変数を示して?Microsoftのビルドツールがセッション中に設定したすべてのものを見つけようとしています。ただ、ベースをカバーしたいだけです。
Ungeheuer 2017

1

余分な行や空白のないきれいな出力を得るには、で次のコマンドを使用しますcmd.exe

ユーザー環境変数:

FOR /F "tokens=1,3* skip=2" %G IN ('reg query HKCU\Environment') DO @echo %G=%H %I

グローバル(システム)環境変数:

FOR /F "tokens=1,3* skip=2" %G IN ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"') DO @echo %G=%H %I

Windows 7-10で動作し、おそらく以前のバージョンでも動作します。


これをありがとう。スペースが含まれている場合は、値の一部が削除されることに注意してください。したがって、のようなレジストリエントリは次のようにVS140COMNTOOLS REG_SZ C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools 表示されますVS140COMNTOOLS=C:\Program
メタル

@metalこのコーナーケースを報告してくれてありがとう。スペースの回避策を見つけた場合は、自由に回答を編集してください-現在、Windowsコンピューターを使用していません
maoizm

その影響に関する更新を提出しました。あなたまたはいくつかのmodがそれを承認する必要があります。
金属

1

バッチコマンドを入力します:echo%temp%

「temp」環境変数に「H:\ Users \ amacm \ AppData \ Local」が含まれている場合、Windowsはすぐに次のように応答します。

H:\ Users \ amacm \ AppData \ Local

「temp」という名前の環境変数がない場合、Windowsは次のように応答します。

%temp%

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.