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

Setting a system environment variable from a Windows batch file?

是否可以通过Windows7中的命令提示符(甚至XP)在系统级别设置环境变量?我正在从提升的命令提示符运行。

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


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

1
2
3
4
5
6
7
8
9
10
11
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

我认为Windows7实际上是作为标准安装的一部分附带了setx


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

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

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

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

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

注意:确保从命令行管理窗口运行命令setx。


如果通过setx设置变量,则不能立即使用该变量或其更改。您必须重新启动要使用它的进程。

使用以下顺序也可以在设置过程中直接设置它(在设置全局变量后执行某些初始化操作的脚本中对我来说非常有效):

1
2
SET XYZ=test
SETX XYZ test


对于XP,我使用了一个名为"Rapidee"(快速环境编辑器)的(免费/捐赠软件)工具,但是setx对于win 7来说绝对足够了(我以前不知道)。


可以通过命令和注册表设置系统变量例如,注册表查询"hkey_local_machinesystemcurrentcontrolsetcontrolsession managerenvironment"/v路径

这里给出了所有常用的命令码和系统变量:使用命令设置Windows系统环境变量。

打开命令和类型集

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

Type设置Java以了解在Windows操作系统上安装的Java的路径细节。


为了防止您需要删除一个变量,您可以使用位于http://barnyard.syr.edu/~vefatica的vincent fatica中的setenv。不完全是最近的("98"),但仍在使用Windows 7 x64。