35

C:\Program Files (x86)\WinMergeユーザー変数に追加するとPATH(コンピューターを右クリック -> 詳細システム設定 -> 環境変数)、新しい cmd シェルを開くと、WinmergeU.exe が認識されません。そのパスをシステムPATH変数に追加すると、代わりに WinmergeU.exe が正しく認識されます。ユーザーとシステムの間に違いはありませんでしたが、システムに設定すると、ユーザーPATHはローカルですが、すべてのユーザーがそれを見ることができます。私は何か間違ったことをしていますか?

編集1:

次の例では、最初にがシステム変数に追加された場合 (ただし、ユーザーには追加されません)、次にユーザー変数に追加された場合 (C:\Program Files (x86)\WinMergeシステム変数には追加されません) を確認できます。最初のケースでは、Winmerge ウィンドウが正しく起動し (表示されていません)、echo %PATH% コマンドによってパスが表示されます。2 番目のケースでは起動せず、echo %PATH% によってパスが表示されません。(これらのスクリーンショットを撮る前にOKで明確に確認し、環境変数ウィンドウを閉じたことに注意してください。PATHを変更してOKを押した直後に新しいコマンドを開きました)。この問題は、ここでの私の質問に関連している可能性があります ( %PATH% のエコーは、システムまたはユーザー変数のみに展開されますか? )。そうではない可能性があるため、2 つの異なる質問を投稿しました。PATHPATH

システム

ユーザー

4

3 に答える 3

44

何か問題があるか、マシンに環境上の問題があるに違いありません。ユーザーPATH環境変数を追加すると、新しいプロセスの環境にマージされます。

更新:おそらく、環境変数に関する MSDN トピックからのこのコメントが適切である可能性があります。

Windows Server 2003 では、システム PATH が 1920 文字を超えると、プロセス PATH 環境変数を設定するためにユーザー PATH 環境変数がマージされなくなります。プロセス PATH 変数。

于 2014-01-21T23:05:27.020 に答える
1

Windows 7 では、システム パスがバックスラッシュで終わっていないことも確認してください。存在する場合、通常どおり USER PATH がシステム パスに追加されますが、改行の後に、問題が発生します。後者の場合、単純なコマンド「path」と「echo %PATH%」で 2 つの異なる出力が出力されます。

于 2016-08-23T15:32:43.470 に答える
-1

16.6 では、この問題がパスの長さの問題でもあることを確認しました。cmd プロンプトで「set」と入力すると、すべての環境が表示されます。変数。ユーザー パスのケイデンス変数などは含まれていません。元の完全なパス テキストを保存してから、不要と見なされた特定の (システム) パス要素を調べてトリミングしました。この後、新しい cmd セッションで「set」と入力すると、システム パス要素の末尾に追加されたユーザー パス要素が表示されるようになりました。

于 2015-05-26T21:23:47.300 に答える