作者:朱金灿

来源:http://blog.csdn.net/clever101

从网上搜了一些资料,再修改测试,终于通过了win7系统的测试。代码如下:

@echo off

rem 本批处理文件目的为了增加Java开发的三个相关环境变量:JAVA_HOME、CLASS_PATH和Path

rem 作者:朱金灿,如有问题请发邮件:clever101@163.com

@set Path_=%javaPath%\bin;%javaPath%\jre\bin

@reg add "HKLM\system\controlset001\control\session manager\environment" /v JAVA_HOME /t reg_sz /d "%javaPath%" /f 

rem 查询Path环境变量的所有路径
@set Path_=%javaPath%\bin
for,/f,"tokens=1,2,* delims= ",%%a,in,('reg query "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment" /v Path'),do,(
@set PathAll_=%%c
) rem 去除路径的最后的空格 :intercept
if "%PathAll_:~-1%"==" " set "PathAll_=%PathAll_:~0,-1%"&goto intercept rem 判断java的相关路径是否在Path环境变量下,如果不在则添加进来
echo %PathAll_%|find /i "%Path_%" && set IsNull=true|| set IsNull=false
if not %IsNull%==true (
reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d "%PathAll_%;%Path_%" /f
)
if not %IsNull%==false (echo "Java的bin路径已经在Path环境变量中") @reg add "HKLM\system\controlset001\control\session manager\environment" /v CLASSPATH /t reg_expand_sz /d "%javaPath%\lib\dt.jar;%javaPath%\lib\tools.jar;." /f rem 刷新注册表 taskkill /f /im explorer.exe start explorer.exe RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters pause

for,/f,"tokens=1,2,* delims=(Tab)(空格)",%%a,in,('reg query "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment" /v Path')

这一句的作用是遍历注册表HKLM\SYSTEM\ControlSet001\Control\Session Manager\Environment中的Path变量的所有文本,并以Tab+空格做分隔符,取出第1、2和剩余部分,分别存放在a、b、c变量中。如图2-1:

图2-1

因此%%a,代表Path,%%b代表REG_SZ,%%c代表 C:\Windows\System32;D:\Program Files。

必须注意 delims=(Tab)(空格)" ,这里必须是先一个tab后再加空格,不然一定会报错的。

另外注意,因为上面的对Path的分割用的是(Tab)(空格),for语句写成如下:

for,/f,"tokens=1,2,3 delims=(Tab)(空格)",%%a,in(略)

这里%%c取得的值将是 “C:\Windows\System32;D:\Program”,原因是Program Files中出现了一个空格。

神说,这里因为delims默认的分隔符是空格和tab键,这个地方注意一下!

参考文献:

1. 批处理 字符串去空格实现代码

2.批处理常用命令及path路径添加

3.批处理应用之设置JAVA环境变量




批处理实现添加java环境变量的更多相关文章

  1. Mac下添加java环境变量

    2015年4月22号更新: 发现一个坑:最近发现有同事按照本文方式配置jdk环境变量一直不成功,后来发现他是使用了“Oh-My-Zsh”,配置文件的路径不是/etc/profile或~/.bash_p ...

  2. linux添加JAVA环境变量

    root用户: 1.修改文件vim /etc/profile 添加以下信息: export JAVA_HOME=/home/jdk1..0_79 (这里需要添加自己的JDK安装目录) export C ...

  3. mac java环境变量设置

    Mac下添加java环境变量 方法一:全局配置   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #临时提权   sudo su   #输入密码   vi /et ...

  4. mac下java环境变量配置

    发现一个坑:最近发现有同事按照本文方式配置jdk环境变量一直不成功,后来发现他是使用了“Oh-My-Zsh”,配置文件的路径不是/etc/profile或~/.bash_profile,它有自己的配置 ...

  5. Java环境变量配置&解决版本不一致问题

    之前用Myeclipse编译运行Java没有问题 但是突然想用简单点的NotePad++以及cmd直接编译运行Java 这就让我倒腾了一晚上 先说下问题的解决,再总结下查阅的一些知识. 1.进行win ...

  6. Question20180106 Java环境变量的配置及为什么要配置环境变量

    Question 1  Java环境变量的配置及为什么要配置环境变量 Q1.1为什么要配置环境变量 在学习JAVA的过程中,涉及到多个环境变量(environment variable)的概念,如PA ...

  7. java环境变量配置

    1.打开我的电脑--属性--高级--环境变量 2.新建系统变量JAVA_HOME 和CLASSPATH 变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.7.0 ...

  8. JAVA基础学习——1.3 关于JAVA环境变量设定 Path,Java_Home,ClassPath

    在安装完JDK以后,要设定JAVA环境变量. 刚接触的时候,我很困惑,这特么什么玩意啊,然后知其然不知其所以然的 按照说明做完了却不知道为什么这么做,这里简单做一些总结说明. 首先,什么是环境变量 环 ...

  9. Java环境变量的简记

    1,安装版的jre或jdk.安装后如果不做开发用,则只是做Java运行时环境,则不需要手动配置任何Java环境变量. 2,绿色解压版(拷贝版)jdk或jre.运行和开发都需要配置环境变量. 运行Jav ...

随机推荐

  1. WPF 列表自动换行

    原文:WPF 列表自动换行 本文告诉大家如何在 ListView 或 ListBox 使用 WrapPanel 让里面的控件自动换行 在 WPF 可以通过修改 ItemsPanel 设置使用不同的 I ...

  2. IDEA中编写脚本并运行shell脚本

    IDEA中编写脚本并运行shell脚本     来自 <https://blog.csdn.net/u012443641/article/details/81295999>

  3. Mysql学习总结(21)——MySQL数据库常见面试题

    1. 如何使用SELECT语句找到你正在运行的服务器的版本并打印出当前数据库的名称? 答:下面的语句的结果会显示服务器的版本和当前的数据库名称 mysql> SELECT VERSION(), ...

  4. CSS中的相关概念

    CSS的几个概念: 包括块:一个元素的"布局上下文".对于正常的HTML文本流中的一个元素,包括块由近期的块级祖先框.表单元格或行内块祖先框的内容边界(content edge)构 ...

  5. Jmeter添加响应断言

    1.使用Badboy录制登录页面->import to Jmeter 2.Jmeter打开保存的文件,在登录请求下添加响应断言

  6. SVN版本号管理工具使用中常见的代码提交冲突问题的解决方法

    相信刚開始学习使用SVN的小伙伴在项目合作开发的过程中一定常常遇到一些影响到自己编写的代码的苦恼.我这里列举了几种常见的问题以及问题的解决方法: 1.误删除和误操作的问题 问题1:有A和B两个人一块合 ...

  7. bzoj1002: [FJOI2007]轮状病毒(基尔霍夫矩阵)

    1002: [FJOI2007]轮状病毒 题目:传送门 题解: 决定开始板刷的第一题... 看到这题的时候想:这不就是求有多少种最小生成树的方式吗? 不会啊!!!%题解... 什么鬼?基尔霍夫矩阵?? ...

  8. [HNOI2008] GT考试(DP+矩阵快速幂+KMP)

    题目链接:https://www.luogu.org/problemnew/show/P3193#sub 题目描述 阿申准备报名参加 GT 考试,准考证号为 N 位数 X1,X2…Xn(0 <= ...

  9. Keyboard input

    Keyboard input Python provides a build-in function called raw_input (in version 2.x) that gets input ...

  10. VS2013+PTVS,python编码问题

    1.调试,input('中文'),乱码2.调试,print('中文'),正常3.不调试,input('中文'),正常4.不调试,print('中文'),正常 页面编码方式已经加了"# -- ...