admin管理员组文章数量:1122999
一、基础知识
在重装系统后,可能需要配置计算机的环境变量,在这里以配置Java环境变量为例讲解几种配置方式。
1.SET命令:这种语法只能在Cmd Shell环境中有效,关闭运行环境环境变量将不保存。
例子:
@echo off
set PATH=C:\Java\jdk1.8.0_31\bin
set /p cmd="环境变量设置完成,输入javac回车测试:"
%path%
@pause
2.SETX命令:Window XP 以上的系统都自带了该命令(如果没有,下载一个Setx.exe),这种方式为永久设定环境变量。
设置用户环境变量
setx path “C:\Java\jdk1.8.0_31\bin”
设置系统环境变量
setx path “C:\Java\jdk1.8.0_31\bin” /m
SETX使用需要注意一下几点:
1.在某些情况下会出现“setx 无效语法 默认选项不能超过’2’次”的错误,据信是因为原先的环境变量中存在空格导致的,可使用双引号进行避免。
2.setx设置环境变量后,将在新打开的终端中生效,当前终端不会立即生效。
3.setx在设置变量的长度超过1024,会截取多出的字符。
4.setx还可以操作远程计算机,具体参数设置百度一下setx用法。
5.setx在设置某一变量的值,如果已经存在该变量会覆盖之前的值。所以正确方式是:要保存值=获取当前该变量的值+新值。
例如:set oldValue=获取当前变量值
setx path %oldValue%;%newValue%
以下为获取用户环境变量path的值,该例子读取注册表内的值。
@echo off
set regPath= HKEY_CURRENT_USER\Environment
set key=path
::判断是否存在该路径
reg query %regPath% /v %key% 1>nul 2>nul
if %ERRORLEVEL%==0 (
For /f "tokens=3,4 delims= " %%v in ('Reg Query %regPath% /v %key% ') do Set oldValue=%%v
) else Set oldValue=""
echo %key%的原值为:%oldValue%
pause
3.reg add :直接操作注册表,添加环境变量。
用户环境变量注册表路径
HKEY_CURRENT_USER\Environment
系统环境变量注册表路径
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
例如:
@echo off
SET regPath= HKEY_CURRENT_USER\Environment
reg add %regPath% /v Path1 /t REG_EXPAND_SZ /d "%path%;C:\Java\jdk1.8.0_31\bin" /f
pause
使用reg操作注册表需要注意以下几点:
1.效果和SETX一样,但是两者区别是setx直接生效,reg add 需要重启电脑。reg操作注册表需要管理员权限。
2.如果路径中有空格时,需要用空格括起来。如下:
SET regPath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session" "Manager\Environment
二、使用SETX配置JDK和安卓SDK环境变量实践
@ECHO OFF
ECHO *******************************************************************************
ECHO * 用于配置环境变量的批处理程序
ECHO * 配置JAVA环境变量请输入: 1;
ECHO * 配置安卓SDK环境变量请输入:2;
ECHO * 以下注意事项:
ECHO * 1)配置环境变量前会先备份注册表(备份当前脚本所在文件夹的backup.reg)
ECHO * 2)如配置的环境变量有问题请运行backup.reg还原
ECHO * 3)修改注册表,有些杀毒软件会报警,请点击信任
ECHO *******************************************************************************
::用户变量存储路径
SET userRegPath=HKEY_CURRENT_USER\Environment
::系统变量存储路径,路径中有空格要用引号括起来
::SET systemRegPath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session" "Manager\Environment
::JDK默认安装路径
SET defaultJdkPath=C:\Program Files\Java\*
::注册表备份路径,%~dp0指的当前目录
SET regBakupPath=%~dp0backup.reg
::JDK环境变量CLASSPATH
SET CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
::配置JDK的path
SET configJdkPath=%%JAVA_HOME%%\bin;%%JAVA_HOME%%\jre\bin;
::查询注册表的关键字
SET key=path
::配置AndriodSdk的path
SET configAndriodSdkPath=%%ANDROID_SDK_HOME%%\platform-tools;%%ANDROID_SDK_HOME%%\tools
::使用关键字key查询用户环境变量注册表
REG QUERY %userRegPath% /v %key% 1>nul 2>nul
::若使用关键字key查询用户环境变量成功,将查询出来变量的结果存到oldPathValue中
if %ERRORLEVEL%==0 (
for /f "tokens=3 delims= " %%i in ('REG QUERY %userRegPath% /v %key%') DO (SET oldPathValue=%%i)
)
SET /P var="请输入要配置的环境变量(1:JDK;2:安卓SDK):"
if "%var%" == "1" ( goto java )
if "%var%" == "2" ( goto andriod )
:java
FOR /d %%i IN ("%defaultJdkPath%") DO (ECHO %%i|FIND "jdk">NUL && SET JAVA_HOME=%%i)
IF NOT DEFINEd JAVA_HOME (
SET /P JAVA_HOME="默认路径下没有找到JDK,请输入JDK的安装路径(如:C:\Program Files\Java\jdk1.8.0_73):"
)
IF NOT EXIST "%JAVA_HOME%" (
ECHO 输入的JDK安装路径不存在,请检查
PAUSE
EXIT
)
ECHO 备份组册表...
REG EXPORT %userRegPath% "%regBakupPath%"
ECHO 新建环境变量JAVA_HOME
SETX JAVA_HOME "%JAVA_HOME%"
ECHO 新建环境变量CLASSPATH
SETX CLASSPATH "%CLASSPATH%"
ECHO 设置PATH
IF DEFINEd oldPathValue (
SETX PATH "%oldPathValue%;%configJdkPath%"
) else SETX PATH "%configJdkPath%"
ECHO JDK环境变量配置成功!
EXIT
:andriod
SET /P ANDROID_SDK_HOME="请输入ANDROID SDK的安装路径,platform-tools文件夹上一层(如:D:\Android\sdk\)"
ECHO 备份组册表...
REG EXPORT %userRegPath% "%regBakupPath%"
ECHO 新建环境变量ANDROID_SDK_HOME
SETX ANDROID_SDK_HOME "%ANDROID_SDK_HOME%"
ECHO 设置PATH
IF DEFINEd oldPathValue (
SETX PATH "%oldPathValue%;%configAndriodSdkPath%"
) else SETX PATH "%configAndriodSdkPath%"
ECHO ANDROID SDK环境变量配置成功!
PAUSE
EXIT
三、ReadMe:
1.适用环境:windows操作系统;
2.适用于配置jdk和android sdk环境变量;
3.使用方式:双击脚本按提示进行操作即可;
四、FAQ
Q:BAT脚本中包含中文,执行后出现乱码
R:文件编码问题;
S:将编码改成ANSI格式;
Q:BAT脚本中for命令中的变量写成%i时,执行bat脚本,直接闪退;
R:cmd命令行下必须使用%i ,批处理脚本中必须使用%%i
S:解决方案:将%i修改%%i
版权声明:本文标题:一键部署JDK环境变量(windows) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1726341229a1076667.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论