使用set命令时,无法在新的cmd会话中访问它。
set NEWVAR=SOMETHING
echo %NEWVAR%
相关问题:
是否有任何命令行工具可用于在Windows中编辑环境变量?
在通过Windows批处理脚本生成的外壳中设置多个环境变量
#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文章以包括此信息。)
评论
setx变量值-然后重新启动命令提示符对于命令行+ powershell,这是完整的文档-dowdandassociates.com/blog/content/…