在Windows 7(甚至XP)中,是否可以通过命令提示符在系统级别设置环境变量?我正在从一个升高的命令提示符运行。
当我使用set命令(set name=value)时,环境变量似乎只对命令提示符的会话有效。
在Windows 7(甚至XP)中,是否可以通过命令提示符在系统级别设置环境变量?我正在从一个升高的命令提示符运行。
当我使用set命令(set name=value)时,环境变量似乎只对命令提示符的会话有效。
XP支持工具(可以从XP光盘中安装)附带一个名为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作为标准安装的一部分。
在命令行中使用setx.exe设置JAVA_HOME的简单示例:
setx JAVA_HOME "C:\Program Files (x86)\Java\jdk1.7.0_04"
这将为当前用户设置环境变量“JAVA_HOME”。如果你想为所有用户设置一个变量,你必须使用选项“/m”(或者-m,在Windows 7之前)。
这里有一个例子:
setx /m JAVA_HOME "C:\Program Files (x86)\Java\jdk1.7.0_04"
注意:该命令需要以Administrator用户执行。
注意:请确保在命令行管理窗口中运行命令setx
如果你需要删除一个变量,你可以在http://barnyard.syr.edu/~vefatica上使用Vincent Fatica提供的SETENV。 不是最近的(1998年),但仍然在Windows 7 x64上工作。
如果你通过SETX设置一个变量,你不能立即使用这个变量或它的变化。您必须重新启动希望使用它的进程。
使用下面的顺序在设置过程中直接设置它(对我来说,在设置全局变量后做一些init的东西的脚本中是完美的):
SET XYZ=test
SETX XYZ test
系统变量可以通过CMD和注册表设置 例如,reg查询“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment”/v PATH
这里列出了所有常用的CMD代码和系统变量:通过CMD设置Windows系统环境变量。
打开CMD,输入Set
你会得到系统变量的所有值。
输入set java可以了解windows操作系统上安装的java的详细路径。
SetX是在大多数情况下都需要的命令。虽然可以使用REG或REGEDIT
使用注册表编辑命令,您可以避免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—注意是批处理;在.reg文件中用作注释时,作为分隔符被忽略):
REGEDIT4
; @ECHO OFF
; CLS
; REGEDIT.EXE /S "%~f0"
; EXIT
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
"SystemVariable"="GlobalValue"
[HKEY_CURRENT_USER\Environment]
"UserVariable"="SomeValue"