我希望使用cmd->以管理员身份运行,在“系统变量”中设置MAVEN_HOME

时间:2019-08-21 16:49:57

标签: batch-file cmd path environment-variables

我试图使用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 \使用%cd%的KristomInstall \ apache-maven-3.6.1“。而是选择

C:\WINDOWS\System32\ 

作为使用%cd%的路径。

我需要使用-m并以管理员身份运行它,以及获取正在运行的批处理文件的当前位置的方式(因为我尝试使用%cd%进行操作)

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

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

1 个答案:

答案 0 :(得分:2)

您的问题没有提及,但是该行为表明您是从运行此问题的。

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

为此,当脚本使用相对路径时,应从一开始就将目录更改为运行脚本的d riv和p ath,

@Echo Off
CD /D "%~dp0"

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

或将%CD%变量替换为运行脚本的d riving和p ath。

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

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