使用setx一次性设置系统环境变量

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使用setx一次性设置系统环境变量 - qindingsky - 宁静以致远   

(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看。

猜你喜欢

转载自mysuperbaby.iteye.com/blog/1391919