XP下通过 命令行/批处理 修改环境变量

88590191 2011-09-14

XP系统的环境变量都是保存在注册表里的,所以如果想要通过命令行或者是批处理来修改环境变量,就需要知道它保存在注册表的哪个地方。

PS.CMD命令可以通过set直接修改环境变量,但那只是一次性的,系统重启后就无效了,这也是为什么要直接修改注册表的原因。

系统环境变量空间的注册表项保存位置为:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

当前用户环境变量空间的注册表项保存位置为:

HKEY_CURRENT_USER\Environment

有了这个东西,我们就可以利用CMD的reg命令来修改注册表了,关于reg命令,你可以自己去Google一下,用法很多。

你可以把修改环境变量的CMD语句写进批处理,当然你也可以使用C语言的system("命令");语句把它写成一个小程序。

这里我写三条语句来修改JDK的环境变量

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Java_Home /t reg_sz /d "%cd%" /f

这条语句是增加Java_Home环境变量,变量的值是这个批处理所在的路径。所以,将这三条语句写成批处理后,只要把批处理文件放置到JDK的安装目录下,即可一次性配置好环境变量。

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v ClassPath /t reg_expand_sz /d ".;%Java_Home%\lib\dt.jar;%Java_Home%\lib\tools.jar;%Java_Home%\lib\htmlconverter.jar" /f

这条语句是增加ClassPath环境变量

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v path /t reg_expand_sz /d ".;%path%;%Java_Home%\bin" /f

这条语句是修改Path环境变量,要使用%path%来读取之前的Path变量,否则会清空原来的Path变量

有了核心内容,其他的修饰就很随意了,交给你来办啦,嘿嘿。

恩,结合这篇文章看吧《常用系统环境变量的含义》

2009.10.02 重要修改:

最近在使用批处理的时候总是不能一次成功,刚才仔细研究了一下才发现一系列很重要的问题!

1、批处理会自动转换%variable%变量

2、使用reg命令修改注册表时,如果%variable%存在有效值,则自动替换%variable%;如果%variable%不存在,那么保持原样输出

实验了很多次才发现这两条关键性问题,懂不懂无所谓了,我懂了就行。如果想要成功使用批处理修改,必须修改2条。第一是批处理中的%必须使用转义字符%%维持变量符号,第二是必须最后倒入Java_Home,这样前面调用%Java_Home%的时候才不会自动转换变量。总之,最后有效的批处理是这样的:

@reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v ClassPath /t reg_expand_sz /d ".;%%Java_Home%%\lib\dt.jar;%%Java_Home%%\lib\tools.jar;%%Java_Home%%\lib\htmlconverter.jar" /f

@reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v path /t reg_expand_sz /d ".;%path%;%%Java_Home%%\bin" /f

@reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Java_Home /t reg_sz /d "%cd%" /f

使用方法:将上面的代码保存为jdk.bat,然后放置到JDK安装目录下!!!双击即可完成环境变量的配置。

相关推荐