Windows(バージョン10など)では、次のコマンドを使用して環境変数を一覧表示できます
set
すべてのユーザーで同じである環境変数のみ、または現在のユーザーまたはセッションである環境変数のみをどのようにリストしますか?
Windows(バージョン10など)では、次のコマンドを使用して環境変数を一覧表示できます
set
すべてのユーザーで同じである環境変数のみ、または現在のユーザーまたはセッションである環境変数のみをどのようにリストしますか?
回答:
物事は、マイクロソフトが時々見かけるよりも少し複雑です。
環境変数の多くはレジストリに格納されています。つまり、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%
refreshenv.cmd
SET
コマンドは、動的な環境変数を示して?Microsoftのビルドツールがセッション中に設定したすべてのものを見つけようとしています。ただ、ベースをカバーしたいだけです。
余分な行や空白のないきれいな出力を得るには、で次のコマンドを使用します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
。
setx test removeme
、set test %test%
すべての変数をシンプルなリストに含めることができるように何かをset
?コマンド/バッチスクリプトを実装して、要求に応じてそれらすべてを明示的にすることは可能だと思っていました...