Answers:
恐怕不是那么简单。正如您所建议的那样,环境变量不受范围的限制,但是您正确地比较了动词时变量中值的生存期是正确的。
Set
修改当前外壳程序(窗口)的环境值,该更改立即可用,但这是临时的。所做的更改不会影响正在运行的其他外壳程序,并且一旦关闭外壳程序,新值就会丢失,直到您再次设置运行时为止。
setx
永久修改该值,这会影响将来的所有Shell,但不会修改已经运行的Shell的环境。您必须退出外壳并重新打开外壳,然后才能使用更改,但是该值将保持修改状态,直到您再次更改它为止。
参见此处的示例:http : //batcheero.blogspot.com/2008/02/set-and-setx.html
实际上,我们可以在三个范围内设置变量:
1. Shell
2.用户
3. System(计算机)或Global
C:\Users\977246>set /?
Displays, sets, or removes cmd.exe environment variables.
SET [variable=[string]]
variable Specifies the environment-variable name.
string Specifies a series of characters to assign to the variable.
Type SET without parameters to display the current environment variables.
C:\Users\977246>setx /?
SetX has three ways of working:
Syntax 1:
SETX [/S system [/U [domain\]user [/P [password]]]] var value [/M]
Syntax 2:
SETX [/S system [/U [domain\]user [/P [password]]]] var /K regpath [/M]
Syntax 3:
SETX [/S system [/U [domain\]user [/P [password]]]]
/F file {var {/A x,y | /R x,y string}[/M] | /X} [/D delimiters]
Description:
Creates or modifies environment variables in the user or system
environment. Can set variables based on arguments, regkeys or
file input.
To remove the variable set value to empty string as follows
Example: setx path ""
在GUI用户和系统环境变量中。
添加其他应答者错过的点。
要设置系统环境变量而不是用户环境变量,我们只需要在setx命令中使用/ m选项并从提升的(管理员)命令提示符下运行它即可。
setx variable value /m
示例:以管理员身份打开命令提示符并运行
setx Path "%Path%;C:\Users\User\Libs" /m
说明:上面的命令会将“ C:\ Users \ User \ Libs”追加到已经存在的路径变量(系统环境变量)中。
如果没有/ m参数,它将仅更改或创建用户级Path变量。
从setx用户手册中,
/ M指定应在系统范围(HKEY_LOCAL_MACHINE)环境中设置变量。默认设置是在HKEY_CURRENT_USER环境下设置变量。
SET /?
和SETX /?
-应该给你一些想法。