web-dev-qa-db-ja.com

WindowsでPATH環境変数にディレクトリを追加する

WindowsでシステムのPATH環境変数にC:\xampp\phpを追加しようとしています。

環境変数ダイアログボックスを使用して追加しました。

しかし、私が自分のコンソールに入力すると:

C:\>path

新しいC:\xampp\phpディレクトリは表示されません。

PATH=D:\Program Files\Autodesk\Maya2008\bin;C:\Ruby192\bin;C:\WINDOWS\system32;C:\WINDOWS;
C:\WINDOWS\System32\Wbem;C:\PROGRA~1\DISKEE~2\DISKEE~1\;c:\Program Files\Microsoft SQL
Server\90\Tools\binn\;C:\Program Files\QuickTime\QTSystem\;D:\Program Files\TortoiseSVN\bin
;D:\Program Files\Bazaar;C:\Program Files\Android\android-sdk\tools;D:\Program Files\
Microsoft Visual Studio\Common\Tools\WinNT;D:\Program Files\Microsoft Visual Studio\Common
\MSDev98\Bin;D:\Program Files\Microsoft Visual Studio\Common\Tools;D:\Program Files\
Microsoft Visual Studio\VC98\bin

2つ質問があります。

  1. これはなぜ起こったのでしょうか。私が間違ったことはありますか?
  2. また、コンソールを使用して(およびプログラム的にバッチファイルを使用して)ディレクトリをPATH変数に追加する方法
433
Mp de la Vega

これはレジストリを変更するだけです。既存のプロセスはこれらの値を使用しません。新しいプロセスは、開始されるとそうなりますafterこの変更andは、親から古い環境を継承しません。

コンソールセッションの開始方法を指定しませんでした。これを確実にする最良の方法は、コマンドシェルを終了し、再度実行することです。その後、更新されたPATHを継承する必要があります。

130
Hans Passant

オプション1

GUIでPATHを変更したら、コンソールウィンドウを閉じてからもう一度開きます。

変更後に開始されたプログラムだけが新しいPATHを見るのでこれはうまくいきます。

オプション2

開いたコマンドウィンドウでこのコマンドを実行します。

set PATH=%PATH%;C:\your\path\here\

このコマンドは、現在のPATHC:\your\path\here\を追加します。

それを分解する:

  • set - cmdの環境変数を変更するコマンド 現在のcmdセッションに対してのみ ;他のプログラムやシステムは影響を受けません。
  • PATH= - PATHは一時的に変更される環境変数です。
  • %PATH%;C:\your\path\here\ - %PATH%部分は現在のPATHの値に展開され、;C:\your\path\here\はそれに連結されます。これが新しいPATHになります。
847
JimR

警告: この解決策 はあなたのPATHとシステムの安定性にとって有害な可能性があります 。副作用として、ユーザーとシステムのPATHをマージし、PATHを1024文字に切り捨てます。このコマンドの効果は元に戻せません。最初にPATHのバックアップを作成してください。詳しくはコメントを参照してください。

盲目的にこれをコピーアンドペーストしないでください。慎重に使用してください。

永久的に PATH コマンドでsetxへのパスを追加することができます。

setx /M path "%path%;C:\your\path\here\"

システムのPATHではなくユーザーのPATHを設定したい場合は、/Mフラグを削除してください。

ノート:

  • setxコマンドは、Windows 7以降でのみ使用可能です。
  • このコマンドは昇格したコマンドプロンプトから実行する必要があります。

  • 現在のセッションに対してのみ変更したい場合は、 set を使用してください。

169
Nafscript

setまたはsetxコマンドは不要で、単にターミナルを開いて次のように入力します。

PATH

これは、PATH変数の現在の値を示しています。ここでディレクトリを追加しますか?次のように入力します:

PATH %PATH%;C:\xampp\php

何らかの理由でPATH変数をクリアする場合(パスがまったくない、またはすべてのパスを削除する)、次のように入力します。

PATH ;

更新

以下のコメントで指摘したDanial Wilsonのように、現在のセッションでのみパスを設定します。パスを永続的に設定するにはsetxを使用しますが、現在のセッションではなく永続的にパスを設定しますが、変更を確認するには新しいコマンドラインを開始する必要がありますが、注意してください こちら

環境変数が存在するかどうか、またはその値を確認するには、ECHOコマンドを使用します。

echo %YOUR_ENV_VARIABLE%
60
zar

この時代のPowerShellでは、PATHを次のように編集します。

$PATH = [Environment]::GetEnvironmentVariable("PATH")
$xampp_path = "C:\xampp\php"
[Environment]::SetEnvironmentVariable("PATH", "$PATH;$xampp_path")

マシン全体ですべてのユーザーに変数を設定するには、最後の行は次のようになります。

[Environment]::SetEnvironmentVariable("PATH", "$PATH;$xampp_path", "Machine")

PowerShellスクリプトでは、PATHに追加する前にC:\xampp\phpの存在を確認したい場合があります(以前に追加された場合)。あなたはif条件式でそれを包むことができます。 

それをまとめると:

$PATH = [Environment]::GetEnvironmentVariable("PATH")
$xampp_path = "C:\xampp\php"
if( $PATH -notlike "*"+$xampp_path+"*" ){
    [Environment]::SetEnvironmentVariable("PATH", "$PATH;$xampp_path", "Machine")
}
32
Ifedi Okonkwo

より安全なSETX

@ Nafscriptの最初のSETX回答に対するすべてのコメントにうなずきます

  • SETXはデフォルトであなたの user パスを更新します。
  • SETX ... /Mはあなたの system パスを更新します。
  • %PATH%には、ユーザーパスが追加されたシステムパスが含まれています

警告

  1. あなたのPATHをバックアップする - SETXは1024文字を超えてあなたのがらくたを切り捨てます
  2. SETX %PATH%;xxxを呼び出さない - システムパスをユーザーパスに追加する
  3. SETX %PATH%;xxx /Mを呼び出さない - システムパスにユーザーパスを追加する
  4. 過度のバッチファイルの使用は失明を引き起こす可能性があります1

ss64 SETXページ には、非常に良い例がいくつかあります。重要なのは、レジストリキーがSETX vs SETX /Mの場所であることを示しています

ユーザー変数: 

HKCU\Environment

システム変数 

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

使用方法

ユーザーPATHに追加

append_user_path.cmd

@ECHO OFF
REM usage: append_user_path "path"
SET Key="HKCU\Environment"
FOR /F "usebackq tokens=2*" %%A IN (`REG QUERY %Key% /v PATH`) DO Set CurrPath=%%B
ECHO %CurrPath% > user_path_bak.txt
SETX PATH "%CurrPath%";%1

システムに追加PATH

append_system_path.cmd 管理者として実行する必要があります。

KeySETX /M修飾子が異なる以外は基本的に同じです)

@ECHO OFF
REM usage: append_system_path "path"
SET Key="HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
FOR /F "usebackq tokens=2*" %%A IN (`REG QUERY %Key% /v PATH`) DO Set CurrPath=%%B
ECHO %CurrPath% > system_path_bak.txt
SETX PATH "%CurrPath%";%1 /M

代替案

最後に、ss64 SETXページで推奨されている _ setenv _ と呼ばれる改善されたバージョンがあり、これはユーザーまたはシステム環境変数の設定を分割するものです。


厳密には真実ではない

26
icc97

パーティーに遅刻 - あなたが既にPATHに追加したいディレクトリにいる場合は便利です。

set PATH=%PATH%;%CD%

edit:コメント通り - 標準ウィンドウのcmdで動作しますが、PowerShellでは動作しません。

PowerShellの場合、同等の%CD%[System.Environment]::CurrentDirectoryです。

23
nclord

Setxを使用してパスを誤って入力した場合はどうなりますか?最善の方法は、単にウィンドウのU.Iを介してです。 [コントロールパネル] - > [すべてのコントロールパネルの項目] - > [システム] - > [高度なシステム設定] - > [環境変数]

「パス」までスクロールして、「編集」を選択します。コピーしてお気に入りのエディタに貼り付けることで、パス全体を確認して編集することもできます。

19
Thomas Fonseca
  • コマンドラインの変更は恒久的なものではなく、コンソールを閉じると失われます。
  • パスは先着順で動作します。 
  • 他の既に含まれている実行可能ファイルを上書きしたいと思うかもしれません。たとえば、パスに別のバージョンがすでにあり、パスを永久に変更せずに別のバージョンを追加したい場合は、コマンドの先頭にディレクトリを配置する必要があります。

既に含まれている実行可能ファイルを上書きする。 

pATH = C:\ xampp\php;%PATH%;に設定します。

3
hevi

すべての答えとは別に、あなたがあなたのwindows環境変数を編集するためにNice GUIツールが欲しいならば、あなたは Rapid Environment Editorを使うことができます

それを試してみてください!安全に使えて、すごい!

http://www.rapidee.com/en/

2
Mp de la Vega

Windows 10 LTSBで上記の提案をチェックし、 "help"の概要(cmdで 'command /?'をタイプすると見られる)を垣間見ると、PATHコマンドはという結論に至りました。現在のセッションに対してのみシステム環境変数のPath値を変更しますが、再起動後は、PATHコマンドを使用する前と同じように、すべての値がデフォルト値にリセットされます。

一方、管理者権限でSETXコマンドを使用すると、はるかに強力になります(または少なくともこのコマンドが次に使用されるまで、または次回これらの値が手動でGUI操作されるまで)。

しかし明快さのために私がここで私のために働いた最高のSETX構文使用法を共有することは誰かに役立つかもしれないと思いました:

SETX PATH "%PATH%;C:\path\to\where\the\command\resides"

等号 '='は避けてください。スペースについては心配しないでください。パスの中にスペースが含まれている場合は、それ以上の引用符を挿入する必要はありません。分割記号 ';'仕事をする。

SETXの後に続くPATHキーワードは、システム環境変数の可能な値の中からどの値のセットを変更すべきかを定義し、引用符の中の%PATH%(パーセント記号で囲まれたWord PATH)は既存のままにするようOSに指示します。 PATH値をそのままにして、次のパス(分割記号「;」の後に続くパス)を既存の値に追加します。

HTH

1
such_ke_nasdeeq

要点 2 私はPATHや他の環境変数を追加している簡単なバッチファイルを使っています。したがって、デフォルトでは環境変数による汚染はありません。このバッチファイルはどこからでもアクセスできるので、次のように入力します。

c:\>mybatchfile
-- here all env. are available
c:\>php file.php
1
Grzegorz Gajos

コマンドプロンプトで、startを先頭に付けることで、CmdにExplorerのコマンドラインを使用するように指示します。

だからstart Yourbatchname

名前がbatchfile.exeのように登録する必要があります。

プログラムと文書はレジストリに追加することができるので、スタート - 実行ダイアログボックスまたはショートカットにパスを付けずに名前を入力すると、Windowsはそれらを見つけることができます。

これは一般的なregファイルです。以下の行を新しいテキストドキュメントにコピーし、anyname.regとして保存します。あなたのプログラムや文書でそれを編集してください。

Regeditが単一の\を使用してそのキー名を区切っているので、パスでは\を使用してキーパス内のフォルダー名を区切ってください。すべてのregファイルはREGEDIT4で始まります。セミコロンは行をコメントに変えます。 @記号は、名前付きの値ではなくキーに値を割り当てることを意味します。

ファイルは存在する必要はありません。これは、Win.exeを開くようにWord.exeを設定するために使用できます。

start batchfileと入力するとiexplore.exeが起動します。

REGEDIT4
;The bolded name below is the name of the document or program, <filename>.<file extension> 

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\Batchfile.exe]

;The @ means the path to the file is assigned to the default value for the key.
;The whole path in enclosed in a quotation mark ".

@="\"C:\\Program Files\\Internet Explorer\\iexplore.exe\""

;Optional Parameters. The semicolon means don't process the line. Remove it if you want to put it in the registry

;Informs the Shell that the program accepts URLs.

;"useURL"="1"

;Sets the path that a program will use as its' default directory. This is commented out.

;"Path"="C:\\Program Files\\Microsoft Office\\Office\\"

あなたはすでに別の答えで道について話されています。 cmdマクロについてはdoskey /?も参照してください(これらは入力時にのみ機能します)。

CMDの起動コマンドを実行できます。 Windows Recource Kitテクニカルリファレンスから

オートラン  

HKCU\Software\Microsoft\Command Processor 

Data type Range Default value 
REG_SZ  list of commands  There is no default value for this entry.  

説明

Cmd.exeを起動するたびに実行されるコマンドが含まれています。

0
user6017774
  1. そのときにPHPをインストールしました。抽出 php-7 ***。Zip に C:\ php \
  2. 現在のPATH環境変数をバックアップします:cmdを実行し、コマンドを実行します:path >C:\path-backup.txt

  3. 現在のパス値をC:\ path.txtファイルに取得します(同じ方法)

  4. Path.txtを変更します(パスの長さは1024文字を超えています。ウィンドウは数年実行されています)
    • そこにある重複パスを削除しました 'C:\ Windows; または C:\ Windows\System32; または C:\ Windows\System32\Wbem; -私は二度持っています。
    • アンインストールされたプログラムのパスも削除します。例: C:\ Program Files\NonExistSoftware;
    • このように、私のパス文字列の長さ<1024 :)))
    • パス文字列の最後に; C:\ php \を追加します
    • コピー パス値のみ 二重引用符で囲まれたバッファに!例:「C:\ Windows; ****; C:\ php \」いいえ PATH = そこにいるはずです!!!
  5. Windows PowerShellを管理者として開きます。
  6. コマンドを実行:

setx path "Here you should insert string from buffer (new path value)"

  1. ターミナルを再実行し(「Far manager」を使用)、次を確認します:php -v
0
Serb

gtools からパッチを適用したもの

直感的な方法で物事をやります。

pathed /REMOVE "c:\my\folder"
pathed /APPEND "c:\my\folder"

それと結果が表示されます新しいcmdを生成する必要はありません

0
womd

コントロールパネルに代わるより良い方法は、Pathenatorと呼ばれるsourceforgeのこのフリーウェアプログラムを使うことです。

https://sourceforge.net/projects/pathenator/ /

ただし、Windows 7、8、または10など、Dot.Net 4.0以上のシステムでのみ動作します。

0
Bill Moore

cmdコマンドを実行すると、そのコマンドウィンドウのすべてのシステム変数が更新されます。

0
RBXII3