我试图使用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的路径。
答案 0 :(得分:2)
您的问题没有提及,但是该行为表明您是从batch-file运行此问题的。
首先要注意的是,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
请记住,您设置的变量仅在打开新的命令窗口时生效。