Windows中环境变量中的SETX和SET有什么区别


63

SETX和之间有什么区别SET

据我了解:
两者都用于设置环境变量
SETX,用于用户变量。
SET用于shell变量。


3
尝试SET /?SETX /?-应该给你一些想法。
Iszi 2015年

2
另外,请参阅SS64的SETSETX参考。SS64是几种语言和命令环境的出色命令参考-我发现它特别适合CMD和PowerShell。
Iszi 2015年



Answers:


83

恐怕不是那么简单。正如您所建议的那样,环境变量不受范围的限制,但是您正确地比较了动词时变量中值的生存期是正确的。

Set修改当前外壳程序(窗口)的环境值,该更改立即可用,但这是临时的。所做的更改不会影响正在运行的其他外壳程序,并且一旦关闭外壳程序,新值就会丢失,直到您再次设置运行时为止。

setx永久修改该值,这会影响将来的所有Shell,但不会修改已经运行的Shell的环境。您必须退出外壳并重新打开外壳,然后才能使用更改,但是该值将保持修改状态,直到您再次更改它为止。

参见此处的示例:http : //batcheero.blogspot.com/2008/02/set-and-setx.html


13
写得很好,不过我要补充一点,那就是setx更改注册表
barlop 2015年

实际上,它甚至没有这里描述的简单。要注意“易变”的环境变量。并且,在某些情况下,SET命令显示的变量列表会有所不同,具体取决于用户是否调用了“提升”命令提示符。
kreemoweet

10

实际上,我们可以在三个范围内设置变量:
1. Shell
2.用户
3. System(计算机)或Global

SET:创建或更新当前的外壳程序临时范围。

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.

SETX:创建或更新当前用户环境变量以永久保存。

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用户和系统环境变量中。

在此处输入图片说明


3

添加其他应答者错过的点。

要设置系统环境变量而不是用户环境变量,我们只需要在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环境下设置变量。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.