Answers:
事情比微软有时看起来要复杂一些。
许多环境变量都存储在注册表中。这意味着您可以使用以下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
实用程序为10行代码,基本上可以查询和刷新注册表项
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
显示为just VS140COMNTOOLS=C:\Program
。
setx test removeme
那么是什么,set test %test%
以便您可以用简单的set
?列出所有变量?我以为可以实现命令/批处理脚本,以便根据要求将它们明确显示出来……