系统环境变量详解

首先明确一点:
所有的在cmd命令行下对环境变量的修改只对当前窗口有效,不是永久性的修改。也就是说当关闭此cmd命令行窗口后,将不再起作用。
永久性修改环境变量的方法有两种:
一种是直接修改注册表(此种方法目前没试验过),
另一种是通过我的电脑-〉属性-〉高级,来设置系统的环境变量(查看详细)。

其次,明确一下环境变量的作用。
它是操作系统用来指定运行环境的一些参数。比如临时文件夹位置和系统文件夹位置等。
当你运行某些程序时,除了在当前文件夹中寻找外,还会到这些环境变量中去查找,
比如“Path”就是一个变量,里面存储了一些常用的命令所存放的目录路径。

什么情况下进行设置?
当启动cmd命令行窗口调用某一命令的时候,经常会出现“xxx不是内部或外部命令,也不是可运行的程序或批处理文件”,
如果你的拼写没有错误,同时计算机中确实存在这个程序,那么出现这个提示就是你的path变量没有设置正确,因为你的path路径,
也就是默认路径里没有你的程序,同时你有没有给出你程序的绝对路径(因为你只是输入了命令或程序的名称而已),
这是操作系统不知道去哪儿找你的程序,就会提示这个问题。


1.查看全部的环境变量方法
在 cmd 中输入 set 命令
C:\Documents and Settings\Administrator>set

ALLUSERSPROFILE=C:\Documents and Settings\All Users

APPDATA=C:\Documents and Settings\Administrator\Application Data

CLIENTNAME=Console

CommonProgramFiles=C:\Program Files\Common Files

COMPUTERNAME=ZHAO

ComSpec=C:\WINDOWS\system32\cmd.exe

COSMOSM=D:\Program Files\SolidWorks Corp\COSMOS M

FP_NO_HOST_CHECK=NO

GENICAM_ROOT_V1_1=C:\Program Files\Cognex\Common\genicam

HALCONARCH=x86sse2-win32

HALCONEXAMPLES=d:\Program Files\MVTec\HALCON-10.0\examples

HALCONIMAGES=d:\Program Files\MVTec\HALCON-10.0\images

HALCONROOT=d:\Program Files\MVTec\HALCON-10.0

HOMEDRIVE=C:

HOMEPATH=\Documents and Settings\Administrator

IC32PATH=C:\Documents and Settings\Administrator\My Documents\IC Imaging Control 3.2\

lang=chs

LOGONSERVER=\\ZHAO

NUMBER_OF_PROCESSORS=4

OS=Windows_NT

Path=
C:\WINDOWS\system32;
C:\Inprise\vbroker\bin;
D:\Program Files\MVTec\HALCON-10.0\bin\x86sse2-win32;
D:\Program Files\MVTec\HALCON-10.0\bin\x86sse2-win32;
C:\Program Files\Common Files\Pleora;
C:\Program Files\Cognex\VisionPro\bin;
D:\Program Files\OpenCV2.1\vc2008\bin;

path2.3=D:\Program Files\OpenCV2.3.1\VS2008\install\bin

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH

PROCESSOR_ARCHITECTURE=x86

PROCESSOR_IDENTIFIER=x86 Family 6 Model 42 Stepping 7, GenuineIntel

PROCESSOR_LEVEL=6

PROCESSOR_REVISION=2a07

ProgramFiles=C:\Program Files

PROMPT=$P$G

QUARTUS_ROOTDIR=d:\altera\11.0\quartus


SESSIONNAME=Console

SOPC_KIT_NIOS2=d:\altera\11.0\nios2eds

SystemDrive=C:

SystemRoot=C:\WINDOWS

TBB=D:\Program Files\OpenCV2.3.1\build\common\tbb\ia32\vc9

TEMP=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp

TMP=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp

USERDOMAIN=ZHAO

USERNAME=Administrator

USERPROFILE=C:\Documents and Settings\Administrator

VBROKERDIR=C:\Inprise\vbroker

VPRO_ROOT=C:\Program Files\Cognex\VisionPro

VS100COMNTOOLS=D:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\

VS90COMNTOOLS=d:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\

windir=C:\WINDOWS

2.部分系统内置的环境变量解释

命令行解释器概述

命令行解释器是一个单独的软件程序,它可以在用户和操作系统之间提供直接的通讯。
非图形命令行解释器用户界面提供运行基于字符的应用程序和实用程序的环境。命令行解释器通过使用类似于 MS-DOS 命令解释程序 https://www.360docs.net/doc/b79524325.html, 的
各个字符来执行程序并在屏幕上显示其输出。Windows 服务器操作系统命令行解释器使用命令解释程序
Cmd.exe(该程序加载应用程序并指示应用程序之间的信息流动)将用户输入转换为操作系统可理解的形式。

可以使用命令行解释器创建和编辑可自动执行常规任务的批处理文件(也称作脚本)。
例如,可以使用脚本自动管理用户帐户或夜间备份。还可以使用“Windows 脚本宿主”、 CScript 的命令行版本在命令行解释器中运行更高级的脚本。
详细信息,请参阅 运行 Windows Script Host。通过使用批处理文件来执行操作,可比使用用户界面更有效率。
批处理文件接受命令行上可用的所有命令。有关批处理文件和脚本的详细信息,请参阅 使用批处理文件。

您可以自定义命令提示符窗口以易于查看并增强对程序运行方式的控制。有关自定义命令提示符窗口的详细信息,请参阅 配置命令提示符。
使用命令语法
语法按命令及所带参数必须遵循的键入顺序出现。下面的 xcopy 命令示例显示了各种语法文本格式:
xcopy Source [Destination] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:MM-DD-YYYY]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a | /m}] [/n] [/o] [/x] [/exclude:File1[+[File2]][+[File3]] [{/y | /-y}] [/z]
下表说明如何解释不同的文本格式。

格式 意义
斜体 用户必须提供的信息
粗体 用户必须按照显示的内容精确键入的元素
省略号(...) 可在命令行中重复多次的参数
在方括号 ([]) 之间 可选项目
在大括号 ({}) 之间用竖杠 (|) 隔开的选项,例如:{even|odd} 用户必须从中只选择一个选项的选项组
Courier 字体 代码或程序输出

使用多个命令和条件处理符号
使用条件处理符号可以在单个命令行或脚本

中运行多个命令。通过条件处理符号运行多个命令时,
条件处理符号右边的命令根据条件处理符号左边命令的执行结果来发挥作用。
例如,只有在前一个命令失败的情况下才可能需要运行一个新命令。或者,只有在前一个命令成功时才可能需要运行一个新命令。
可以使用下表列出的特殊字符来传递多个命令。

字符 语法 定义
& [...] Command1 &Command2 用来分隔一个命令行中的多个命令。Cmd.exe 运行第一个命令,然后运行第二个命令。
&&[...] Command1 &&Command2 只有在符号 && 前面的命令成功时,才运行该符号后面的命令。Cmd.exe 运行第一个命令,然后只有在第一个命令运行成功时才运行第二个命令。
|| [...] Command1 || Command2 只有在符号 || 前面的命令失败时,才运行符号 || 后面的命令。Cmd.exe 运行第一个命令,然后只有在第一个命令未能运行成功(接收到大于零的错误代码)时才运行第二个命令。
( ) [...] ( Command1 & Command2) 用来分组或嵌套多个命令。
; 或者, Command1 Parameter1;Parameter2 用来分隔命令参数。

注意
? “与”符号 (&)、管线 (|) 以及括号 () 是特殊字符,将它们作为参数传递时,必须在其前面加上转义字符 (^) 或引号。
? 如果某个命令成功完成操作,该命令就返回零 (0) 退出代码或不返回任何退出代码。有关退出代码的详细信息,
请参阅 使用 Windows 部署和资源工具包。



嵌套命令行解释器
通过在命令提示符下打开新的 Cmd.exe 实例,可以在 Cmd.exe 内嵌套命令行解释器。默认情况下,
Cmd.exe 的每个实例继承其父 Cmd.exe 应用程序的环境。通过嵌套 Cmd.exe 实例,可以在不影响 Cmd.exe 父应用程序的情况下,
对本地环境进行更改。这样就使您能够保留 Cmd.exe 原始环境,并在终止嵌套命令行解释器之后返回到该原始环境。
但是在嵌套的命令行解释器中所做的更改将不会被保存。
要嵌套命令行解释器,请在命令提示符下键入:
cmd
出现类似于下面内容的消息:
Microsoft (R) Windows Server 2003, Standard Edition (TM)(C) Copyright 1985-2002 Microsoft Corp.
要关闭嵌套的命令行解释器,请键入 exit。
使用 setlocal 和 endlocal 命令,甚至还可以在 Cmd.exe 的实例中(或在脚本中)进一步将更改局部化。
Setlocal 创建本地作用域,而 endlocal 终止本地作用域。在 setlocal 和 endlocal 作用域内所做的更改将会被放弃,
从而保持原始环境不变。这两个命令的嵌套最高可达到 32 级。有关 setlocal 和 endlocal 命令的详细信息,请参阅 Setlocal 和 Endlocal。

将环境变量与 Cmd.exe 一起使用
Cmd.exe 命令行解释器环境由确定命令行解释器和操作系统行为的变量进行定义。可以

使用两种类型的环境变量(系统和局部)
来定义命令行解释器环境或整个操作系统环境的行为。系统环境变量定义全局操作系统环境的行为。局部环境变量定义 Cmd.exe 当前实例环境的行为。
系统环境变量预置于操作系统之中,并可用于所有 Windows 服务器操作系统进程。只有具有管理凭据的用户才可以更改系统变量。
这些变量最常用于登录脚本。局部环境变量只有在创建变量时针对的目标用户登录到计算机时才有效。HKEY_CURRENT_USER
配置单元中设置的局部变量只对当前用户有效,但它们会定义全局操作系统环境的行为。

下表按优先顺序的降序描述变量的各种类型:

内置系统变量

HKEY_LOCAL_MACHINE 配置单元中的系统变量

HKEY_CURRENT_USER 配置单元中的局部变量

在 Autoexec.bat 文件中设置的所有环境变量和路径

在登录脚本(如果有的话)中设置的所有环境变量

在脚本或批处理文件中交互使用的变量

在命令行解释器中,Cmd.exe 的每个实例都继承其父应用程序的环境。
因此,可以在不影响父应用程序环境的情况下更改新的 Cmd.exe 环境中的变量。

下表列出 Windows 服务器操作系统的系统和局部环境变量。
变量 类型 描述
%ALLUSERSPROFILE% 局部 返回“所有用户配置文件”的位置。
%APPDATA% 局部 返回默认情况下应用程序存储数据的位置。
%CD% 局部 返回当前目录字符串。
%CMDCMDLINE% 局部 返回用来启动当前的 Cmd.exe 的准确命令行。
%CMDEXTVERSION% 系统 返回当前的“命令处理程序扩展”的版本号。
%COMPUTERNAME% 系统 返回计算机的名称。
%COMSPEC% 系统 返回命令行解释器可执行程序的准确路径。
%DATE% 系统 返回当前日期。使用与 date /t 命令相同的格式。由 Cmd.exe 生成。有关 date 命令的详细信息,请参阅 日期。
%ERRORLEVEL% 系统 返回上一条命令的错误代码。通常用非零值表示错误。
%HOMEDRIVE% 系统 返回连接到用户主目录的本地工作站驱动器号。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
%HOMEPATH% 系统 返回用户主目录的完整路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
%HOMESHARE% 系统 返回用户的共享主目录的网络路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
%LOGONSERVER% 局部 返回验证当前登录会话的域控制器的名称。
%NUMBER_OF_PROCESSORS% 系统 指定安装在计算机上的处理器的数目。
%OS% 系统 返回操作系统名称。Windows 2000 会将该操作系统显示为 Windows NT。
%PATH% 系统 指定可执行文件的搜索路径。
%PATHEXT%

系统 返回操作系统认为可执行的文件扩展名的列表。
%PROCESSOR_ARCHITECTURE% 系统 返回处理器的芯片体系结构。值:x86 或 IA64(基于 Itanium)。
%PROCESSOR_IDENTFIER% 系统 返回处理器说明。
%PROCESSOR_LEVEL% 系统 返回计算机上安装的处理器的型号。
%PROCESSOR_REVISION% 系统 返回处理器的版本号。
%PROMPT% 局部 返回当前解释程序的命令提示符设置。由 Cmd.exe 生成。
%RANDOM% 系统 返回 0 到 32767 之间的任意十进制数字。由 Cmd.exe 生成。
%SYSTEMDRIVE% 系统 返回包含 Windows 服务器操作系统根目录(即系统根目录)的驱动器。
%SYSTEMROOT% 系统 返回 Windows 服务器操作系统目录的位置。
%TEMP% 和 %TMP% 系统和用户 返回对当前登录用户可用的应用程序所使用的默认临时目录。有些应用程序需要 TEMP,而其他应用程序则需要 TMP。
%TIME% 系统 返回当前时间。使用与 time /t 命令相同的格式。由 Cmd.exe 生成。有关 time 命令的详细信息,请参阅 时间。
%USERDOMAIN% 局部 返回包含用户帐户的域的名称。
%USERNAME% 局部 返回当前登录的用户的名称。
%USERPROFILE% 局部 返回当前用户的配置文件的位置。
%WINDIR% 系统 返回操作系统目录的位置。


个别变量详解

PATHEXT环境变量简介
Windows XP的“运行”命令为一些有经验的用户提供了一个简单快速的方法来打开文件,而不再需要通过“开始”目录,
或在文件夹中寻找文件。例如:当我再“运行”窗口中输入 cmd.exe 并点击确定时,命令行窗口就直接被打开了。同样的,
输入 msconfig.exe 后,可以直接打开“系统配置”界面。

其实很多人都知道,当使用“运行”命令时,并不需要总是输入某些文件的扩展名的,例如只输入文件名部分,用cmd代替cmd.exe即可。
如果这样可以,那是因为EXE文件扩展名是XP中的可靠扩展名而无须提供。当你没有输入扩展名时,XP会尝试几种默认扩展名,
这些XP默认的扩展名就在PATHEXT变量中声明。

PATHEXT系统变量默认的声明如下:.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH 。需要注意的是 .MSC 扩展名并不在此之列。
这个后缀的文件用来打开XP的管理控制台。如果你希望打开类似Services这类MMC文件,而不在“运行”窗口输入文件全名(services.msc),
那么就需要将.MSC 添加到XP的PATHEXT变量中。

要增加一个新的文件扩展名到XP的PATHEXT变量中的步骤如下:
1、打开控制面板 - 性能和维护 - 系统
2、点击“高级”,再点击“环境变量”按钮
3、在系统变量列表中,双击PATHEXT变量并点击“编辑”按钮
4、在.WSH后面输入一个分号,再输入.MSC,然后点击“确定”
5、重启系统后尝试不

加扩展名打开services.msc

其实对于PATHEXT的性质来说,还可以用来做一些其他的用途,
例如在网上看到的一个,不希望别人在自己机子上使用ping、net等命令,就可以通过修改PATHEXT中的文件扩展名排列顺序来实现,
主要就是因为XP系统在自己匹配默认扩展名是是根据PATHEXT中的排列顺序依次进行的,简单讲一讲做法:
首先将PATHEXT中的扩展名排列顺序修改为.BAT排在最前,然后创建ping.bat、net.bat文件,
存放到%SystemRoot%\system32(即存放ping.exe、net.exe的地方),bat中的内容如下:
@echo off
echo '%0' 不是内部或外部命令,也不是可运行的程序
echo 或批处理文件。
这样,当在cmd下输入ping之后,由于未加后缀,导致windows自己匹配,在首先匹配到ping.bat之后执行该文件,
在前段显示该命令不存在的信息,这样就可以简单欺骗不熟悉系统的用户(比如说我)。当然自己用的时候,输全ping.exe来执行命令就可以了。


Prompt (环境变量的PROMPT 显示当前CMD的提示符是什么,如要更改就可使用 Prompt DOS命令)
功能
更改 Cmd.exe 提示符。如果不带参数使用,prompt 将命令提示符重置为默认设置 ( 当前驱动器盘符后接当前目录和大于符号 (>) )

语法
prompt [text]

参数
text
指定要包含在系统提示符中的任何文本和信息。
/?
在命令提示符显示帮助。

注释
可以自定义命令提示符,以显示所需的任何文本,包括当前目录名、时间和日期以及 Windows XP 版本号等信息。
下表列出了能够在 text 命令行选项中包含的字符组合,而不是(或除了)一个或多个字符串。
列表包括对添加到命令提示符的每个字符组合的文本或信息的简要描述。 字符 说明

$q =(等号)
$$ $(美元符号)
$t 当前时间
$d 当前日期
$p 当前驱动器和路径
$v Windows XP 版本号
$n 当前驱动器
$g >(大于号)
$l <(小于号)
$b |(pipe)
$_ 回车符 - 换行符
$e ANSI 转义代码(代码 27)
$h 退格键(删除已写入提示命令行的字符)
$a & (与符号)
$c ((左括号)
$F )(右括号)
$s space

启用了命令扩展(即默认值)时,prompt 命令可支持下表中列出的格式化字符。 字符 说明
$+ 零个或多个加号 (+) 字符,取决于 pushd 目录堆栈的深度,每推入一级一个字符。
$m 与当前驱动器盘符关联的远程名称,如果当前驱动器不是网络驱动器,则为空字符串。

如果在文本参数中包括 $p字符,系统将在输入每个命令后读取磁盘,以确定当前驱动器和路径。这样会花费额外的时间,特别是对于软盘驱动器。
范例
以下范例设置命令提示符以显示当前驱动器和路径,后接大于号 (>):

prompt $p$g



以下命令显示两行提示,第一行显示当前时间,第二行显示当前日期:

promt time is:$t$_date is$d

3.查看某个环境变量:
输入 “set 变量名”即可,比如想查看path变量的值,即输入 set path

4.修改环境变量 :输入 “set 变量名=变量内容”即可,比如将path设置为“d:\nmake.exe”,
只要输入set path="d:\nmake.exe"。注意,此修改环境变量是指用现在的内容去覆盖以前的内容,并不是追加。
比如当我设置了上面的path路径之后,如果我再重新输入set path="c",再次查看path路径的时候,其值为“c:”,
而不是“d:\nmake.exe”;“c”。

5.设置为空:如果想将某一变量设置为空,输入“set 变量名=”即可。如“set path=” 那么查看path的时候就为空。
注意,上面已经说了,只在当前命令行窗口起作用。因此查看path的时候不要去右击“我的电脑”——“属性”........

6.给变量追加内容(不同于3,那个是覆盖):输入“set 变量名=%变量名%;变量内容”。
如,为path添加一个新的路径,输入“ set path=%path%;d:\nmake.exe”即可将d:\nmake.exe添加到path中,
再次执行"set path=%path%;c:",那么,使用set path语句来查看的时候,将会有:d:\nmake.exe;c:,而不是像第3步中的只有c:。


7.如何用批处理修改系统path环境变量

目的: 修改或添加系统path环境变量,如果环境变量中有c:/123,则删除之,如果没有%System32%/qqq则添加该路径.
我在批处理中用regedit /e 或 reg export 导出注册表的HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Control/Session Manager/Environment 项,
但导出的path是下列方式的16进制数,且有多行:
"ComSpec"=hex(2):25......
"Path"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,/
00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,3b,00,25,00,/
53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,00,3b,00,25,/ .........
"FP_NO_HOST_CHECK"="NO"
"OS"="Windows_NT"
"PROCESSOR_ARCHITECTURE"="x86"
........
请教高手:
1.对导出的注册表项如何只保留其中的path项(多行完整保留)
2.如何修改已有路径和添加新的路径
说明:在cmd中用set path方式得到的路径都绝对路径,而不是注册表中的相对路径.我希望得到相对路径,
而且绝对路径好象无法导入注册表中更改path值

回复1:

path=%path%;D:/My_Path
dos下运行 set path==%path%;D:/My_Path
然后运行set path可以查看设置后的值。

缺点:运行完批处理后看看系统的path环境变量,添加的路径保存不了,只是在批处理里有效而已。


回复2:

添加系统环境变量:
环境变量值需要手工输入,导入注册表的,应该是永久的。不知道系统环境变量可容纳的字符是多少,如果容纳的比较小,可能导入不成功

@echo

off&setlocal enabledelayedexpansion
:begin
cls
set/p path_=请输入你要添加的环境变量的路径:
if not defined path_ goto error
for,/f,"skip=4 tokens=1,2,*",%%a,in,('reg query "HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Control/Session Manager/Environment" /v Path'),
do,(
echo 当前的环境变量为:
echo %%c
echo;
set/p yesno=是否确认将"%path_%"添加到系统环境变量中去?[Y]/[N]
if /i "!yesno!"=="y" (
reg add "HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Control/Session Manager/Environment" /v Path /t REG_EXPAND_SZ /d "%%c;%path_%" /f
)
goto :eof
)
pause
goto :Eof
:error
echo 输入错误,请重新输入
pause
goto begin



回复3:

Windows Server 2003 自带一个修改用户、系统环境变量并永久生效的工具: SETX.EXE
注:setx,在XP下可以运行。
这个工具已经强大到你可以指定存在于一个文本文件内的(x,y)座标来直接取文本值并设置到环境变量内,并永久生效。
备注:下面 SETX 工具的使用说明

SetX 有三种使用方式:
语法 1:
SETX [/S system [/U [domain/]user [/P [password]]]] var value [/M]

语法 2:
SETX [/S system [/U [domain/]user [/P [password]]]] var /K regpath [/M]

语法 3:
SETX [/S system [/U [domain/]user [/P [password]]]]
/F file {var {/A x,y | /R x,y string}[/M] | /X} [/D delimiters]

描述:
在用户或系统环境创建或修改环境变量。能基于参数、注册表项或文件输
入设置变量。

参数列表:
/S system 指定要连接的远程系统。
/U [domain/]user 指定命令在其下执行的用户上下文。
/P [password] 指定给定用户上下文的密码。如果省略则提示输入。
var 指定要设置的环境变量。
value 指定分配给环境变量的值。
/K regpath 指定变量是基于注册表项的信息而设置的。
路径的格式应该是 hive/key/.../value。例如
HKEY_LOCAL_MACHINE/System/CurrentControlSet/
Control/TimeZoneInformation/StandardName。
/F file 指定要使用的文本文件的文件名。
/A x,y 指定绝对文件坐标(线 X,项目 Y)作为在此文件
里搜索的参数。
/R x,y string 指定有关“字符串”作为搜索参数的相对文件坐标。
/M 指定应该在系统 (HKEY_LOCAL_MACHINE) 环境中设
置此变量。在 HKEY_CURRENT_USER 环境下,默认
将设置此变量。
/X 用 x,y 坐标显示文件内容。
/D delimiters 指定其他限定符,如 "," 或 "/"。

内置分隔符是空格、制表符、回车和换行符。所有
ASCII 字符都可作为限定符。限定符的最大数量,
包括内置分隔符,是 15。
/? 显示帮助消息。

注意: 1) SETX 在注册表中将变量写入主机环境。
2) 在本地系统,用此工具创建或修改的变量将在以后的命令窗口可用,但
在当前的 CMD.exe 命令窗口。
3) 在远程系统,用此工具创建或修改的变量在下次登录会话可用。
4) 有效的注册表项数据类型是 REG_DWORD,REG_EXPAND_SZ,REG_SZ
和 REG_MULTI_SZ。
5) 受支持的配置单元: HKEY_LOCAL_MACHINE (HKLM),
HKEY_CURRENT_USER (HKCU)。
6) 限定符区分大小写。
7) REG_DWORD 的值是从注册表里以十进制格式提取出来的。

示例:
SETX MACHINE COMPAQ
SETX MACHINE "COMPAQ COMPUTER" /M
SETX MYPATH "%PATH%"
SETX MYPATH ~PATH~
SETX /S system /U user /P password MACHINE COMPAQ
SETX /S system /U user /P password MYPATH ^%PATH^%
SETX TZONE /K HKEY_LOCAL_MACHINE/System/CurrentControlSet/
Control/TimeZoneInformation/StandardName
SETX BUILD /K "HKEY_LOCAL_MACHINE/Software/Microsoft/Windows
NT/CurrentVersion/CurrentBuildNumber" /M
SETX /S system /U user /P password TZONE /K HKEY_LOCAL_MACHINE/
System/CurrentControlSet/Control/TimeZoneInformation/
StandardName
SETX /S system /U user /P password BUILD /K
"HKEY_LOCAL_MACHINE/Software/Microsoft/Windows NT/
CurrentVersion/CurrentBuildNumber" /M
SETX /F ipconfig.out /X
SETX IPADDR /F ipconfig.out /A 5,11
SETX OCTET1 /F ipconfig.out /A 5,3 /D "#$*."
SETX IPGATEWAY /F ipconfig.out /R 0,7 Gateway
SETX /S system /U user /P password /F c:/ipconfig.out /X

下面是这个 SETX.EXE Windows Server 2003自带的环境变量操纵工具的中文使用技巧~:)
这个命令行工具提供了一种批量修改环境变量的方法,同时不需要使用任何编程方法或者是脚本。
此外,除了可以获得变量和值之外还可以跟注册表的值挂上关系。在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把它置空。
但是还是来几个例子吧!
https://www.360docs.net/doc/b79524325.html,mand 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看。

相关文档
最新文档