您的位置:首页 > 其它

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

2014-08-22 15:55 267 查看
NO1.转自http://www.slyar.com/blog/xp-java-reg-env.html

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

NO2,Reg命令

Reg概述:

对注册表子项信息和注册表项值中的值执行添加、更改、导入、导出以及其他操作。

Reg 命令包括:

Reg Add / Reg Compare / Reg Copy / Reg Delete / Reg Export / Reg Import / Reg Load / Reg Query / Reg Restore / Reg Save / Reg Unload

Reg Add

将新的子项或项添加到注册表中。

语法:

Reg Add KeyName [{/v ValueName | /ve}] [/t DataType] [/s Separator] [/d Data] [/f]

参数:

KeyName 指定要添加的子项或项的完整路径。要指定远程计算机,请包括计算机名(以 \\ComputerName\ 格式表示),并将其作为 KeyName 的一部分。省略 \\ComputerName\ 会导致默认对本地计算机的操作。KeyName 必须包括一个有效的根键。有效根键包括 HKLM、HKCU、HKCR、HKU 以及HKCC。如果指定了远程计算机,则有效根键是 HKLM 和 HKU。

/v ValueName

指定要添加到指定子项下的注册表项名称。

/ve

指定添加到注册表中的注册表项为空值。

/t Type

指定注册表项的类型。Type 必须是以下几种类型之一:

Reg_SZ

Reg_MULTI_SZ

Reg_DWORD_BIG_ENDIAN

Reg_DWORD

Reg_BINARY

Reg_DWORD_LITTLE_ENDIAN

Reg_LINK

Reg_FULL_RESOURCE_DESCRIPTOR

Reg_EXPAND_SZ

/s Separator

当指定了 Reg_MULTI_SZ 数据类型并且需要列出多个项时,指定用来分隔数据的多个实例的字符。如果没有指定,将使用默认分隔符“\0”。

/d Data

指定新注册表项的数据。

/f

添加注册表项而不要求确认。

/?

在命令提示符处显示 Reg Add 的帮助。

注释:

• 该操作不能添加子树。该版本的 Reg 在添加子项时无需请求确认。

• 下表列出了 Reg Add 操作的返回值。

值 描述

0 成功

1 失败

• 对于 Reg_EXPAND_SZ 项类型,在 /d 参数内将插入符号 ( ^ ) 与“%”一起使用。

示例:

要在远程计算机 ABC 上添加 HKLM\Software\MyCo 项,请键入:

Reg ADD \\ABC\HKLM\Software\MyCo

要将一个注册表项添加到 HKLM\Software\MyCo,选项为值名:Data;类型:Reg_BINARY;数值数据:fe340ead;请键入:

Reg ADD HKLM\Software\MyCo /v Data /t Reg_BINARY /d fe340ead

要将一个多值注册表项添加到 HKLM\Software\MyCo,选项为值名:MRU;数据类型:Reg_MULTI_SZ;数值数据:fax\0mail\0\0;请键入:

Reg ADD HKLM\Software\MyCo /v MRU /t Reg_MULTI_SZ /d fax\0mail\0\0

要将一个扩展的注册表项添加到 HKLM\Software\MyCo,选项为值名:Path;数据类型:Reg_EXPAND_SZ;数值数据:%systemroot%;请键入:

Reg ADD HKLM\Software\MyCo /v Path /t Reg_EXPAND_SZ /d ^%systemroot^%

Reg Compare

比较指定的注册表子项或项。

语法:

Reg Compare KeyName1 KeyName2 [{/v ValueName | /ve}] [{/oa | /od | /os | on}] [/s]

参数:

KeyName1

指定要比较的第一个子项的完整路径。要指定远程计算机,请包括计算机名(以\\ComputerName\ 格式表示),并将其作为 KeyName 的一部分。省略 \\ComputerName\ 会导致默认对本地计算机的操作。KeyName 必须包括一个有效的根键。有效根键包括 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定了远程计算机,则有效根键是 HKLM 和 HKU。

KeyName2

指定要比较的第二个子项的完整路径。要指定远程计算机,请包括计算机名(以 \\ComputerName\ 格式表示),并将其作为 KeyName 的一部分。省略 \\ComputerName\ 会导致默认对本地计算机的操作。只在 KeyName2 中指定计算机名会导致该操作使用到 KeyName1 中指定的子项的路径。KeyName 必须包括一个有效的根键。有效根键包括 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定了远程计算机,则有效根键是HKLM和HKU。

/v ValueName

指定要比较的子项下的值名称。

/ve

指定只比较值名称为 null 的项。

[{/oa | /od | /os | on}]

指定如何显示比较操作的结果。默认设置是 /od。下表列出了每一个选项。

值 描述

/oa 指定显示所有不同点和匹配点。默认情况下,仅列出不同点。

/od 指定仅显示不同点。这是默认操作。

/os 指定仅显示匹配点。默认情况下,仅列出不同点。

/on 指定不显示任何内容。默认情况下,仅列出不同点。

/s

递归地比较所有子项和项。

/?

在命令提示符处显示 Reg Compare 的帮助。

注释:

• 下表列出了 Reg Compare 操作的返回值。

值 描述

0 比较成功且结果相同。

1 比较失败。

2 比较成功并找到不同点。

• 下表列出了结果中显示的符号。

符号 描述

= KeyName1 数据等于 KeyName2 数据

< KeyName1 数据小于 KeyName2 数据

> KeyName1 数据大于 KeyName2 数据

示例:

要将 MyApp 项下的所有值与 SaveMyApp 项下的所有值进行比较,请键入:

Reg COMPARE HKLM\Software\MyCo\MyApp HKLM\Software\MyCo\SaveMyApp

要比较 MyCo 项下的 Version 的值和 MyCo1 项下的 Version 的值,请键入:

Reg COMPARE HKLM\Software\MyCo HKLM\Software\MyCo1 /v Version

要将计算机 ZODIAC 上 HKLM\Software\MyCo 下的所有子项和值与当前计算机上 HKLM\Software\MyCo 下的所有子项和值进行比较,请键入:

Reg COMPARE \\ZODIAC\HKLM\Software\MyCo \\. /s

Reg Copy

将一个注册表项复制到本地或远程计算机的指定位置。

语法:

Reg Copy KeyName1 KeyName2 [/s] [/f]

参数:

KeyName1

指定要复制子项的完整路径。要指定远程计算机,请包括计算机名(以 \\ComputerName\ 格式表示),并将其作为 KeyName 的一部分。省略\\ComputerName\ 会导致默认对本地计算机的操作。KeyName 必须包括一个有效的根键。有效根键包括 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定了远程计算机,则有效根键是 HKLM 和 HKU。

KeyName2

指定子项目的地的完整路径。要指定远程计算机,请包括计算机名(以 \\ComputerName\ 格式表示),并将其作为 KeyName 的一部分。省略 \\ComputerName\会导致默认对本地计算机的操作。KeyName 必须包括一个有效的根键。有效根键包括 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定了远程计算机,则有效根键是 HKLM 和 HKU。

/s

复制指定子项下的所有子项和项。

/f

不要求确认而直接复制子项。

/?

在命令提示符处显示 Reg Copy 的帮助。

注释 :

• 在复制子项时 Reg 不请求确认。

• 下表列出了 Reg Copy 操作的返回值。

值 描述

0 成功

1 失败

示例:

要将 MyApp 项下的所有子项和值复制到 SaveMyApp 项,请键入:

Reg COPY HKLM\Software\MyCo\MyApp HKLM\Software\MyCo\SaveMyApp /s

要将计算机 ZODIAC 上的 MyCo 项下的所有值复制到当前计算机上的 MyCo1 项,请键入:

Reg COPY \\ZODIAC\HKLM\Software\MyCo HKLM\Software\MyCo1

Reg Delete

从注册表删除子项或项。

语法:

Reg Delete KeyName [{/v ValueName | /ve | /va}] [/f]

参数:

KeyName

指定要删除的子项或项的完整路径。要指定远程计算机,请包括计算机名(以 \\ComputerName\ 格式表示),并将其作为 KeyName 的一部分。省略 \\ComputerName\ 会导致默认对本地计算机的操作。KeyName 必须包括一个有效的根键。有效根键包括 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定了远程计算机,则有效根键是 HKLM 和 HKU。

/v ValueName

删除子项下的特定项。如果未指定项,则将删除子项下的所有项和子项。

/ve

指定只可以删除为空值的项。

/va

删除指定子项下的所有项。使用本参数不能删除指定子项下的子项。

/f

无需请求确认而删除现有的注册表子项或项。

/?

在命令提示符处显示 Reg Delete 的帮助。

注释:

• 下表列出了 Reg Delete 操作的返回值。

值 描述

0 成功

1 失败

示例:

要删除注册表项 Timeout 以及其所有子项和值,请键入:

Reg DELETE HKLM\Software\MyCo\MyApp\Timeout

要删除计算机 ZODIAC 上 HKLM\Software\MyCo 下的注册表值 MTU,请键入:

Reg DELETE \\ZODIAC\HKLM\Software\MyCo /v MTU

Reg Export

将本地计算机的指定子项、项和值复制到一个文件中,以便传输到其他服务器。

语法:

Reg export KeyName FileName [/y]

参数:

KeyName

指定子项的完全路径。Export 操作仅可在本地计算机上工作。KeyName 必须包括一个有效的根键。有效根键包括 HKLM、HKCU、HKCR、HKU 以及 HKCC。

FileName

指定在操作期间创建的文件的名称和路径。该文件必须具有 .Reg 扩展名。

/y

不要求确认即覆盖任何现有的名称为 FileName 的文件。

/?

在命令提示符处显示 Reg Export 的帮助。

注释:

• 下表列出了 Reg Export 操作的返回值。

值 描述

0 成功

1 失败

示例:

要将 MyApp 项的所有子项和值的内容导出到文件 AppBkUp.Reg,请键入:

Reg Export HKLM\Software\MyCo\MyApp AppBkUp.Reg

Reg Import

将包含已导出的注册表子项、项和值的文件的内容复制到本地计算机的注册表中。

语法:

Reg Import FileName

参数:

FileName

指定其内容将复制到本地计算机注册表中的文件的名称和路径。此文件必须使用 Reg export 预先创建。

/?

在命令提示符处显示 Reg Import 的帮助。

注释:

• 下表列出了 Reg Import 操作的返回值。

值 描述

0 成功

1 失败

示例:

要从名为 AppBkUp.Reg 的文件导入注册表项,请键入:

Reg Import AppBkUp.Reg

Reg Load

将保存的子项和项写回到注册表的不同子项中。与用于进行疑难解答或编辑注册表项的临时文件一起使用。

语法:

Reg load KeyName FileName

参数:

KeyName

指定要加载的子项的完整路径。要指定远程计算机,请包括计算机名(以 \\ComputerName\ 格式表示),并将其作为 KeyName 的一部分。省略 \\ComputerName\ 会导致默认对本地计算机的操作。KeyName 必须包括一个有效的根键。有效根键包括 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定了远程计算机,则有效根键是 HKLM 和 HKU。

FileName

指定要加载的文件的名称和路径。必须使用 .hiv 作为扩展名的 Reg Save 操作预先创建该文件。

/?

在命令提示符处显示 Reg Load 的帮助。

注释:

• 下表列出了 Reg Load 操作的返回值。

值 描述

0 成功

1 失败

示例:

要将名为 TempHive.hiv 的文件加载到 HKLM\TempHive 项,请键入:

Reg LOAD HKLM\TempHive TempHive.hiv

Reg Quer

返回位于注册表中指定的子项下的下一层子项和项的列表。

语法:

Reg query KeyName [{/v ValueName | /ve}] [/s] [/se Separator] [/f Data] [{/k | /d}] [/c] [/e] [/t Type] [/z]

参数:

KeyName

指定子项的完全路径。要指定远程计算机,请包括计算机名(以 \\ComputerName\ 格式表示),并将其作为 KeyName 的一部分。省略 \\ComputerName\会导致默认对本地计算机的操作。KeyName 必须包括一个有效的根键。有效根键包括 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定了远程计算机,则有效根键是 HKLM 和 HKU。

/v ValueName

指定要查询的注册表值名称。如果省略,则返回 KeyName 的所有值名称。如果还使用了 /f 选项,则此参数的 ValueName 是可选的。

/ve

查询空白的值名称。

/s

指定该参数递归查询所有子项和值名称。

/se Separator

指定单值分隔符,以搜索 Reg_MULTI_SZ 类型的值名称。如果没有指定 Separator,则使用“\0”。

/f Data

指定要搜索的数据或模式。如果字符串包含空格,则使用双引号。如果未指定,则使用通配符 ("*") 作为搜索模式。

/k

指定只在项名称中搜索。

/d

指定只在数据中搜索。

/c

指定查询是区分大小写的。默认情况下,查询是不区分大小写的。

/e

指定只返回完全匹配项。默认情况下,返回所有匹配项。

/t Type

指定要搜索的注册表类型。有效的类型包括:Reg_SZ、Reg_MULTI_SZ、Reg_EXPAND_SZ、Reg_DWORD、Reg_BINARY、Reg_NONE。如果未指定,则搜索所有类型。

/z

指定在搜索结果中包括注册表类型的数字同等物。

/?

在命令提示符处显示 Reg Query 的帮助。

注释:

• 下表列出了 Reg Query 操作的返回值。

值 描述

0 成功

1 失败

示例:

要显示 HKLM\Software\Microsoft\ResKit 项中的名称值 Version 的值,请键入:

Reg QUERY HKLM\Software\Microsoft\ResKit /v Version

要显示远程计算机 ABC 上的 HKLM\Software\Microsoft\ResKit\Nt\Setup 项下的所有子项和值,请键入:

Reg QUERY \\ABC\HKLM\Software\Microsoft\ResKit\Nt\Setup /s

要使用“#”作为分隔符显示 Reg_MULTI_SZ 类型的所有子项和值,请键入:

Reg QUERY HKLM\Software\Microsoft\ResKit\Nt\Setup /se #

要显示数据类型 Reg_SZ 的 HKLM 根下的“SYSTEM”的完全匹配并且区分大小写的匹配项的项、值和数据,请键入:

Reg QUERY HKLM /f SYSTEM /t Reg_SZ /c /e

要显示数据类型 Reg_BINARY 的根键 HKCU 下的数据中的“0F”的匹配项的项、值和数据,请键入:

Reg QUERY HKCU /f 0F /d /t Reg_BINARY

要显示 HKLM\SOFTWARE 下的值名称 null(默认值)的值和数据,请键入:

Reg QUERY HKLM\SOFTWARE /ve

Reg Restore

将保存的子项和项写回到注册表。

语法:

Reg restore KeyName FileName

参数:

KeyName

指定要还原的子项的完整路径。Restore 操作仅在本地计算机上工作。KeyName 必须包括一个有效的根键。有效根键包括 HKLM、HKCU、HKCR、HKU 以及 HKCC。

FileName

指定其内容将写回到注册表中的文件的名称和路径。必须使用 .hiv 作为扩展名的 Reg save 操作预先创建该文件。

/?

在命令提示符处显示 Reg Restore 的帮助。

注释:

• 编辑任何注册表项之前,请使用 Reg Save 操作保存父子项。如果编辑失败,则可以使用 Reg Restore 操作还原原来的子项。

• 下表列出了 Reg Restore 操作的返回值。

值 描述

0 成功

1 失败

示例:

要将名为 NTRKBkUp.hiv 的文件还原到 HKLM\Software\Microsoft\ResKit 项,并覆盖该项的现有内容,请键入:

Reg RESTORE HKLM\Software\Microsoft\ResKit NTRKBkUp.hiv

Reg Save

将指定的子项、项和注册表值的副本保存到指定文件中。

语法:

Reg save KeyName FileName [/y]

参数:

KeyName

指定子项的完全路径。要指定远程计算机,请包括计算机名(以 \\ComputerName\ 格式表示),并将其作为 KeyName 的一部分。省略\\ComputerName\会导致默认对本地计算机的操作。KeyName 必须包括一个有效的根键。有效根键包括 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定了远程计算机,则有效根键是 HKLM 和 HKU。

FileName

指定所创建的文件的名称和路径。如果未指定路径,则使用当前路径。

/y

不要求确认即覆盖任何现有的名称为 FileName 的文件。

/?

在命令提示符处显示 Reg Save 的帮助。

注释:

• 下表列出了 Reg Save 操作的返回值。

值 描述

0 成功

1 失败

• 编辑任何注册表项之前,请使用 Reg Save 操作保存父子项。如果编辑失败,则可以使用 Reg Restore 操作还原原来的子项。

示例:

要将配置单元 MyApp 作为名为 AppBkUp.hiv 的文件保存到当前文件夹中,请键入:

Reg SAVE HKLM\Software\MyCo\MyApp AppBkUp.hiv

Reg Unload

使用 Reg Load 操作删除已加载的部分注册表。

语法:

Reg Unload KeyName

参数:

KeyName

指定要卸载的子项的完整路径。要指定远程计算机,请包括计算机名(以 \\ComputerName\格式表示),并将其作为 KeyName 的一部分。省略 \\ComputerName\ 会导致默认对本地计算机的操作。KeyName 必须包括一个有效的根键。有效根键包括 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定了远程计算机,则有效根键是 HKLM 和 HKU。

/?

在命令提示符处显示 Reg Unload 的帮助。

注释:

• 下表列出了 Reg Unload 操作的返回值。

值 描述

0 成功

1 失败

示例:

要卸载 HKLM 中的配置单元 TempHive,请键入:

Reg UNLOAD HKLM\TempHive
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: