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

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

set NEWVAR=SOMETHING
echo %NEWVAR%


相关问题:


是否有任何命令行工具可用于在Windows中编辑环境变量?
在通过Windows批处理脚本生成的外壳中设置多个环境变量


评论

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

对于命令行+ powershell,这是完整的文档-dowdandassociates.com/blog/content/…

#1 楼

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


设置NEWVAR = SOMETHING


您只是在当前进程空间中设置它。 />
根据此页面,您可以使用setx命令:


setx NEWVAR SOMETHING


setx内置于Windows 7中,但是仅当您安装Windows资源工具包时,才可以使用旧版本

评论


请注意,您需要指定配额,例如: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年10月22日9:00

@ MD.MohiuddinAhmed那是因为路径中有空格。

– ChristF
15年10月22日在9:15

由于限制了1024个字符,因此可能会损坏您的路径! -参见superuser.com/questions/387619/…

– dkocich
20 Apr 15'20:20

您可以使用echo%NEWVAR%检查命令结果。当前cmd将缓存环境变量,因此需要关闭当前cmd并打开一个新cmd才能看到所做的更改。

–拜坦·库尔特(Beytan Kurt)
20年7月3日,16:16

对于Windows Terminal,您当前(2020年11月)需要关闭所有实例并重新启动。

–父亲
20-11-19在11:52

#2 楼

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

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

#3 楼

setx program "C:\Program Files" /M


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

测试


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



评论


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

–DavidPostill♦
17年2月9日在10:23

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

–潘凡林(Pan Van Linh)
17年2月9日在13:14

#4 楼

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

编辑:显然Windows并不自然提供refreshenv,因此来源为:https:// pastebin.com/1fJqA0pT
另存为RefreshEnv.cmd并将其放置在PATH环境变量包含的文件夹中

评论


+1提及“ refreshenv”-我之前从未见过!

–弗朗西斯·诺顿(Francis Norton)
19年3月1日在15:27

#5 楼

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

以下是所有常用的CMD代码和系统变量:使用CMD设置Windows系统环境变量。 />
打开CMD并键入Set

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

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

评论


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

–DavidPostill♦
17 Mar 9 '17 at 13:39

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

– TOOGAM
17 Mar 10 '17 at 9:05

#6 楼

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

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