web-dev-qa-db-ja.com

Windowsの環境変数におけるSETXとSETの違いは何ですか

SETXSETはどう違いますか?

私の理解に従って:
両方とも環境変数を設定するために使用されます
SETXはユーザー変数用です。
SETはシェル変数用です。

57
Premraj

それほど単純ではないと思います。ご存知のように、環境変数は範囲によって制限されませんが、動詞を比較すると、変数内の値の存続期間が異なることは間違いありません。

Setは、現在のシェル(ウィンドウ)の環境値を変更し、その変更はすぐに利用可能になりますが、それは一時的なものです。変更は実行中の他のシェルには影響しません。シェルを閉じるとすぐに、新しい値はsetを再実行するまで失われます。

setxは値を永久的に変更します。これは将来のすべてのシェルに影響しますが、すでに実行されているシェルの環境は変更しません。変更を有効にするにはシェルを終了して再度開く必要がありますが、値を変更するまで値は変更されたままになります。

例については、こちらを参照してください。 http://batcheero.blogspot.com/2008/02/set-and-setx.html

79
Frank Thomas

実際には3つのスコープで変数を設定できます。
1。シェル
2。ユーザー
3。システム(機械)またはグローバル

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ユーザーおよびシステム環境変数内

enter image description here

9
Premraj

他の回答者が見逃した点を追加する。

ユーザー環境変数ではなくシステム環境変数を設定するには、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環境で変数を設定します。

2
Renju Jose