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


63

違いは何であるSETXとはSET

私の理解によると:
環境変数の設定には両方とも
SETXユーザー変数用です。
SETシェル変数用です。


3
試してみてくださいSET /?SETX /?あなたにいくつかのアイデアを与えるべきです- 。
イッツィ

2
また、SETおよびSETXの SS64リファレンスを参照してください。SS64は、いくつかの言語とコマンド環境向けの優れたコマンドリファレンスです。特に、CMDとPowerShellに便利です。
イッツィ

回答


回答:


83

それほど単純ではないのではないかと思います。環境変数は、お勧めのようにスコープによって制限されませんが、動詞を比較するとき、変数の値の有効期間が異なることは正しいことです。

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

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

例についてはこちらをご覧ください:http : //batcheero.blogspot.com/2008/02/set-and-setx.html


13
非常によく書かれていることを、私はSETXは、レジストリを変更すること、けれども追加します
barlop

実際には、ここで説明するよりもさらに単純です。注意すべき「揮発性」環境変数があります。また、状況によっては、SETコマンドで表示される変数のリストは、ユーザーが「昇格した」コマンドプロンプトを呼び出したかどうかによって異なります。
-kreemoweet

10

実際には、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ユーザーおよびシステム環境変数。

ここに画像の説明を入力してください


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環境で変数を設定します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.