我想在不同的java版本之间轻松切换,因此想要通过运行bat / cmd文件在环境变量中设置系统级的主路径和路径。
我的.bat文件如下所示:
@echo off
echo Setting JAVA_HOME
set JAVA_HOME=C:\Program Files\Java\jdk1.8.0
echo JAVA_HOME: %JAVA_HOME%
echo setting PATH
set PATH=%JAVA_HOME%\bin;%PATH%
echo PATH: %PATH%
如果我在同一个命令提示符中键入echo%JAVA_HOME%,那么它会打印到jdk1.8.0的路径,但如果我打开一个新的命令提示符则不会,如果我查看环境变量,它也不会列在那里。
编辑:我也试过@echo off
echo Setting JAVA_HOME
setx JAVA_HOME "C:\Program Files\Java\jdk1.8.0"
echo JAVA_HOME: %JAVA_HOME%
echo setting PATH
setx PATH "%JAVA_HOME%\bin;%PATH%"
echo PATH: %PATH%
echo Display java version
java -version
这适用于用户级别,但不适用于系统级别。
答案 0 :(得分:7)
通过以下方式解决:
@echo off
echo Setting JAVA_HOME
setx -m JAVA_HOME "C:\Program Files\Java\jdk1.8.0"
echo JAVA_HOME: %JAVA_HOME%
echo setting PATH
setx -m PATH "%Path%;%JAVA_HOME%\bin"
echo PATH: %PATH%
echo Display java version
java -version
pause
答案 1 :(得分:1)
请注意,setx没有=符号。如果你有
setx abc=def
它会将变量abc = def设置为空。如果您希望将abc设置为def,则语法为
setx abc def
当您使用set运行批处理文件时,您看到的是正确的行为。全局设置环境变量
@echo off
echo Setting JAVA_HOME
setx JAVA_HOME "C:\Program Files\Java\jdk1.8.0"
echo JAVA_HOME: %JAVA_HOME%
echo setting PATH
setx PATH %JAVA_HOME%\bin;%PATH%
echo PATH: %PATH%
请注意,当您使用setx
时,变量后面没有=