bat / cmd文件来设置java homepath

我想要在不同的Java版本之间轻松切换,因此需要通过运行bat / cmd文件在环境variables的系统级设置主path和path。

我的.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的path,但是如果我打开一个新的命令提示符,那么如果我查看环境variables,它不会在那里列出。

编辑:我也试过

 @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 

而这在用户层面,但在系统层面不起作用。

解决它:

 @echo off echo Setting JAVA_HOME setx -m JAVA_HOME "C:\Program Files\Java\jdk1.8.0" //added -m to add as system variable instead of user. echo JAVA_HOME: %JAVA_HOME% echo setting PATH setx -m PATH "%Path%;%JAVA_HOME%\bin" //added -m here too.. echo PATH: %PATH% echo Display java version java -version pause 

请注意,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时,变量后面没有=