Setx.exe  
 批处理文件:javaEnv.bat
 @echo off 
 @setx JAVA_HOMES D:\Java -m
 命令行下运行javaEnv.bat,即可以一次性设置系统环境变量
下面对改命令做详细介绍: 
 这 个命令行工具提供了一种批量修改环境变量的方法,同时不需要使用任何编程方法或者是脚本。此外,除了可以获得变量和值之外还可以跟注册表的值挂上关系。在 2000中除了setx.exe之外,其他没有任何一种命令行工具可以直接设置系统变量值。只有通过控制面板和注册表编辑器才能够设置。如果有人说可以用 set命令的话, 实际上这个CMD的内部命令只能够设置当前控制台窗口的用户环境变量。 setx允许你通过Command Line Mode,Registry Mode,File Mode,这三种模式来设置环境变量。  
 a. Command-Line  
 setx variable value -m  
 variable  
 要设置的环境变量的名字。  
 value  
 要设置的值。  
 -m  
 设置计算机环境,默认设置是用户环境。  
 b. Registry Mode  
 setx variable -k hive\key\……\value -m  
 variable  
 要设置的环境变量的名字。  
 -k  
 指定变量设置会基于注册表中的信息。  
 hive\key\……\value  
 注册表路径,如:  
 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation\StandardName  
 -m  
 同命令行模式。  
 c. File Mode  
 setx variable -f filename -a x,y │ -r x,y "string" -d d -x -m  
 -f filename  
 指定使用的文件名。  
 -a x,y  
 指定要搜索的绝对坐标或者是偏移量。  
 -r x,y "string"  
 指定从"string"的相对坐标或者是偏移。  
 -d d  
 指定附加的分隔符,后一个d表示,可以是",", "\"等等。系统有四个内建的分隔符是:space, tab,  
 carriage return, linefeed。附加的可以是任意的ASCII字符。  
 -x  
 显示文件坐标,这个时候-a, -r, -d会变忽略。  
 -m  
 在同上。  
 setx将变量写入到在注册表的主环境中去。用setx设置的变量将会在下一次启动的时候生效,这是2000的局限。当访问REG_MULTI_SZ时,只能访问到第一个项目。  
 目前setx只可以支持HKCU和HKLM两个hives。用Setx增加的值不可以用setx去掉,可以在控制面板里面改,也可以在注册表里面改,这种时候也可以用set把它置空。  
 但是还是来几个例子吧!  
 a.Command Line  
 Setx MACHINE COMPAQ  
 在用户环境中设置MICHINE为COMPAQ。  
 setx MYPATH %PATH%  
 设置MYPATH的值为当前PATH变量的值。  
 setx MYPATH ~PATH~  
 设置MYPATH总是和PATH环境的值保持一致。  
 b. Registry  
 Setx TZONE -k  
 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation\StandardName  
 设置TZONE的值为上面的键。比如:"Central Standard Time"  
 Setx BUILD -k "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows  
 NT\CurrentVersion\CurrentBuildNumber"  
 设置BUILD的值为当前的Windows NT版本号,如:1314。  
 c. File  
 在进行这部分之前先运行ipconfig > ipconfig.out,弄一个ipconfig的文本出来。然后就可以进行操作了  
 Setx var -f ipconfig.out -x  
 这个命令会显示这个文件的内容的坐标。如:  
 C:\>SETX VAR -f ipconfig.out -x  
 (1,0 Windows) (1,1 2000) (1,2 IP) (1,3 Configuration)  
 (3,0 Ethernet) (3,1 adapter) (3,2 Local) (3,3 Area) (3,4 Connection
   
 (5,0 Connection-specific) (5,1 DNS) (5,2 Suffix) (5,3 .) (5,4   
 (6,0 IP) (6,1 Address.) (6,2 .) (6,3 .) (6,4 .) (6,5 .) (6,6 .) (6,7 .) (6,8 .)  
 (6,9 .) (6,10 .) (6,11 .) (6,12 .) (6,13  (6,14 192.168.1.1)  
 (7,0 Subnet) (7,1 Mask) (7,2 .) (7,3 .) (7,4 .) (7,5 .) (7,6 .) (7,7 .) (7,8 .)  
 (7,9 .) (7,10 .) (7,11 .) (7,12 .) (7,13  (7,14 255.255.255.0)  
 (8,0 Default) (8,1 Gateway) (8,2 .) (8,3 .) (8,4 .) (8,5 .) (8,6 .) (8,7 .) (8,8  
 .) (8,9 .) (8,10 .) (8,11   
 setx ipaddr -f ipconfig.out -a 5,11  
 这个命令会寻找绝对偏移为(5,11)的内容,然后设置ipaddr为这个值。如:  
 C:\>setx ipaddr -f ipconfig.out -a 6,14  
 Extracted value is: 192.168.1.1  
 Setx ipgateway -f ipconfig.out -r 0,11 "Gateway"  
 查找Gateway这个字符串偏移0,11的东东,然后写到ipgateway里面去。  
 C:\>Setx ipgateway -f ipconfig.out -r 0,11 "Gateway"  
 Extracted value is: 192.168.1.244  
 以上所有的修改都会在重起以后看到,可以用set或者是控制面板中的System properties看。










