首页 > 解决方案 > 我希望使用 cmd 在“系统变量”中设置 MAVEN_HOME -> 以管理员身份运行

问题描述

我正在尝试使用 setx 命令设置 MAVEN_HOME 环境变量,但为了将其设置为“系统变量”而不是“用户变量”。为此,我必须将 -m 与 setx 一起使用。另外,我希望将 MAVEN_HOME 路径设置为运行批处理文件的当前目录路径。我这样做是通过

setx -m MAVEN_HOME "%cd%\apache-maven-3.6.1"

如果我不使用 -m 那么它将 Env_variable 设置为用户变量,如果我使用 -m 并以管理员身份运行它,那么它不会选择当前目录路径,即“C:\Users\nitin\Desktop\KristomInstall\apache -maven-3.6.1" 使用 %cd%。相反,它选择

C:\WINDOWS\System32\ 

作为使用 %cd% 的路径。

我需要的是使用 -m 并以管理员身份运行它以及获取我正在运行的批处理文件的当前位置的方法(因为我试图使用 %cd% 来做)

setx -m MAVEN_HOME "%cd%\apache-maven-3.6.1"

所以我可以将此批处理文件分发到其他系统,而无需手动添加设置 MAVEN_HOME 的路径。

标签: batch-filecmdpathenvironment-variables

解决方案


您的问题没有提到它,但行为表明您正在从运行它。

首先要注意的是SetXwith/m将变量写入HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment注册表。这是一个受保护的位置,需要您的脚本是Run as administrator. 如您所见,当发生这种情况时,当前目录通常设置为C:\WINDOWS\System32

为了解决这个问题,当您的脚本使用相对路径时,您应该在开始时将目录更改为正在运行的脚本的drive 和path,

@Echo Off
CD /D "%~dp0"

SetX MAVEN_HOME "%CD%\apache-maven-3.6.1" /m

或者用运行脚本的rive 和ath替换%CD%变量。dp

@Echo Off
SetX MAVEN_HOME "%~dp0apache-maven-3.6.1" /m

请记住,您设置的变量只有在打开新的命令窗口时才会生效。


推荐阅读