0
点赞
收藏
分享

微信扫一扫

使用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

  


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

举报

相关推荐

0 条评论