在命令提示符下设置和获取Windows环境变量?


220

我想在命令提示符下设置一个环境变量,然后能够在全局范围内访问它(例如,我应该转到系统->环境变量来查看它)。

当我使用set命令时,在新的cmd会话中无法访问它。

set NEWVAR=SOMETHING
echo %NEWVAR%

相关问题:


1
setx变量值-然后重新启动命令提示符
Andrew

Answers:


252

要使环境变量可全局访问,您需要在注册表中进行设置。正如您已经意识到的那样:

设置NEWVAR = SOMETHING

您只是在当前进程空间中进行设置。

根据此页面,您可以使用以下setx命令:

setx NEWVAR的东西

setx内置于Windows 7中,但仅当您安装Windows资源工具包时,才可能提供旧版本


4
请注意,您需要指定配额,例如:setx JAVA_HOME "C:\Program Files\Java\jdk1.7.0_45"将起作用。但是setx JAVA_HOME C:\Program Files\Java\jdk1.7.0_45会给你语法错误
MD。Mohiuddin Ahmed 2015年

5
@ MD.MohiuddinAhmed那是因为路径中有空格。
克里斯·弗里德(ChrisF)2015年

36

我们还可以使用“ setx var variable / M”将var设置为系统环境变量级别而不是用户级别。

注意:此命令应以管理员身份运行。


10
setx program "C:\Program Files" /M

/ M用于设置系统环境变量级别,而不是用户级别,例如@Minh Chau答案

测试 在此处输入图片说明

RESTART命令行(如果不重新启动命令行,则环境变量将不起作用)

在此处输入图片说明


这将重复另一个答案,并且不添加任何新内容。除非您确实有新贡献,否则请不要发布答案。
DavidPostill

8
@DavidPostill我的回答有一个新的问题,我们需要重新启动命令行。我认为这很重要
Phan Van Linh

2

您可以setx env var [/M]如上所述使用。如果没有生效,则可以使用它refreshenv来刷新环境变量。您无需重新启动计算机,explorer.exe或命令提示符即可。

编辑:显然,freshenv并不是Windows 所固有的,所以这里是源代码:https
://pastebin.com/1fJqA0pT另存为RefreshEnv.cmd并将其放置在PATH环境变量中包含的文件夹中


1
+1提及“ refreshenv”-我之前从未遇到过!
弗朗西斯·诺顿

1

可以通过CMD和注册表来设置系统变量。reg查询“ HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment” / v PATH

此处提供了所有常用的CMD代码和系统变量:使用CMD设置Windows系统环境变量

打开CMD并输入Set

您将获得系统变量的所有值。

键入set java以了解在您的窗口操作系统上安装的java的路径详细信息。


请仔细阅读问题。您的答案没有回答原始问题。
DavidPostill

不过,这很接近。使用REG ADD可以完成此操作吗?
TOOGAM

0

我想补充一下,如果您将/ s参数与setx一起使用以便在远程计算机上设置环境变量,则“ Remote Registry”服务需要在目标计算机上运行,​​否则您将收到“ ERROR:The指定的操作无法完成。”

(我已要求Microsoft更新他们在setx上的TechNet文章以包括此信息。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.