首先要找到JDK安装路径
本批处理程序首先假定用户是按照默认路径安装JAVA的(JAVA默认安装路径是"C:\Program Files\Java\jdk×××",最后面的×××表示JDK的版本,如我电脑上是jdk1.6.0_12),故设置一个变量JavaPath="C:\Program Files\Java",然后判断该路径是否存在,如果不存在就设置JavaPath="D:\Program Files\Java"(考虑到用户改变路径时最常做的操作时把要安装的程序放在D盘),然后模糊搜索JavaPath找到下面以JDK开头的文件夹,找到后判断我们要加入系统环境变量中的目录及文件是否都存在,若不存在则提示用户输入JDK安装路径,若存在则进入下一步设置JAVA环境变量。
设置JAVA环境变量
一开始想通过执行类似"set path=%path%;JDKPath"的方法设置JAVA环境变量,但用这种方法设置的环境变量只对当前cmd窗口有效(在开始运行中输入cmd进入dos窗口时,只是获取到当前系统环境变量的副本,故用此法修改时只是修改了副本中的环境变量,当窗口关闭时就失效了)。考虑到要使设置好的环境变量持久有效,就想到要采用修改系统注册表的方法,于是先找到系统环境变量对应的注册表项HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Environment,然后采用命令REG ADD KeyName [/v ValueName | /ve] [/t Type] [/s Separator] [/d Data] [/f]分别将JAVA_HOME,Path,ClassPath加入到系统环境变量中,如:reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Environment" /v JAVA_HOME /t REG_SZ /d "%JDKPath%" /f 是将JAVA_HOME加入到环境变量中。
注意:(1)在加入Path时要把对应值设为\d "%PATH%;%%JAVA_HOME%%\bin"而不能是\d " %JAVA_HOME%%\bin",否则会把原来系统中的Path变量清空。
(2)在加入Path和ClassPath时要将类型设置为/t REG_EXPAND_SZ,而不是/t REG_SZ,否则系统不会将对应值中的%JAVA_HOME%替换为该变量实际的路径。
使设置的环境变量立即生效
按照上面的方法设置的环境变量,需要用户重启电脑或再右击"我的电脑"->属性->高级->环境变量,打开环境变量窗口后再单击下确定后才能生效。想到出现这种情况可能是因为批处理修改注册表后系统没有及时刷新引起的,于是找到下面刷新系统设置的命令
taskkill /f /im explorer.exe
start explorer.exe
RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters
执行后,上面设置的环境变量立即生效。