从Windows批处理文件设置系统环境变量?

时间:2010-09-27 12:07:28

标签: windows batch-file cmd environment-variables

是否可以在Windows 7(或者甚至是XP)中从命令提示符处在系统级别设置环境变量。我正从一个提升的命令提示符运行。

当我使用set命令(set name=value)时,环境变量似乎仅对命令提示符的会话有效。

7 个答案:

答案 0 :(得分:166)

XP支持工具(可以从XP CD安装)附带一个名为setx.exe的程序:

C:\Program Files\Support Tools>setx /?

SETX: This program is used to set values in the environment
of the machine or currently logged on user using one of three modes.

1) Command Line Mode: setx variable value [-m]
   Optional Switches:
    -m  Set value in the Machine environment. Default is User.

...
For more information and example use: SETX -i

我认为Windows 7实际上附带setx作为标准安装的一部分。

答案 1 :(得分:125)

如何在命令行中使用setx.exe设置JAVA_HOME的简单示例:

setx JAVA_HOME "C:\Program Files (x86)\Java\jdk1.7.0_04"

这将为当前用户设置环境变量“JAVA_HOME”。如果要为所有用户设置变量,则必须使用选项“-m”。这是一个例子:

setx -m JAVA_HOME "C:\Program Files (x86)\Java\jdk1.7.0_04"

注意:您必须以管理员身份执行此命令。

注意:确保从命令行管理员窗口

运行命令 setx

答案 2 :(得分:17)

如果通过SETX设置变量,则无法立即使用此变量或其更改。您必须重新启动要使用它的进程。

使用以下序列在设置过程中直接设置(在设置全局变量后执行某些初始化操作的脚本中完美适用于我)

SET XYZ=test
SETX XYZ test

答案 3 :(得分:2)

对于XP,我使用了一个名为“RAPIDEE”(快速环境编辑器)的(免费/捐赠软件)工具,但是对于Win 7来说,SETX肯定是足够的(之前我不知道这个)。

答案 4 :(得分:1)

如果您需要删除变量,可以使用Vincent Fatica的http://barnyard.syr.edu/~vefatica提供的SETENV。 不是最近的(' 98),但仍在使用Windows 7 x64。

答案 5 :(得分:1)

可以通过CMD和注册表设置系统变量 对于前者 reg query" HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment" / v PATH

此处给出了所有常用的CMD代码和系统变量:{​​{3}}。

打开CMD并输入设置

您将获得系统变量的所有值。

键入设置java 以了解窗口操作系统上安装的java的路径详细信息。

答案 6 :(得分:0)

SetX是大多数情况下所需的命令。尽管可以使用REGREGEDIT

使用注册表编辑命令,可以避免SetX命令的某些限制-不同的数据类型,名称中包含=的变量,等等。

@echo off

:: requires admin elevated permissions
::setting system variable
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v MyVar /D MyVal
::expandable variable
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /T REG_EXPAND_SZ /v MyVar /D MyVal


:: does not require admin permissions
::setting user variable
REG ADD "HKEY_CURRENT_USER\Environment" /v =C: /D "C:\\test"

REG是纯注册表客户端,但也可以使用REGEDIT导入数据,尽管它只允许使用硬编码值(或生成临时文件)。此处的示例是一个包含批处理代码和注册表数据的混合文件(应另存为.bat-请注意,批处理;在{{1}中用作注释时将被视为定界符而忽略}文件):

.reg