为什么setxpath不工作?

有人可以解释这个结果吗? 设置path后,它没有改变。 这是在pipe理员命令行中运行的:

C:\Windows\system32>setx path "C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;D:\Program Files (x86)\Microsoft VS Code\bin" 

成功:指定的价值得以保存。

 C:\Windows\system32>path PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;D:\Program Files (x86)\Microsoft VS Code\bin;D:\Program Files (x86)\metapad36;D:\Program Files (x86)\metapad36" /M 

我读过%PATH%= PATHvariables为机器+ PATHvariables的用户。 我看到机器path+pipe理员的path?

看过关于这个话题的其他文章,但还是感到困惑。

我应该清除用户path,所以没有重复?

更新 :重新提示“这个工具创build或修改的variables将在未来的命令窗口中可用”我打开一个非pipe理员窗口,并input:

>path PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;D:\Program Files (x86)\Microsoft VS Code\bin;;D:\Program Files (x86)\metapad36;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;D:\Program Files (x86)\Microsoft VS Code\bin

path重复两次。 好吧,然后在同一个提示我setx的path没有重复,没有/M

 `>setx path "C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;D:\Program Files (x86)\Microsoft VS Code\bin" 

成功:指定的价值得以保存

显然保存在当前的用户环境。

然后我打开一个新的 非pipe理员命令窗口,并且:

>path PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;D:\Program Files (x86)\Microsoft VS Code\bin;;D:\Program Files (x86)\metapad36;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;D:\Program Files (x86)\Microsoft VS Code\bin

它没有改变。 为什么?

谢谢

在Windows中,每个进程都获得一个环境的副本,这个环境本质上是进程启动时全局环境的一个快照。 进程运行对全局环境的更改不会传播回过程自己的环境副本。

为了回答实际的问题, setx会修改用户环境(或者如果用/M运行系统的话),但是在执行setx的进程(在本例中为cmd.exe )中,更改不会立即可见。 如果在运行setx之后打开新的命令提示符,则会看到cmd.exe实例中的更改。

这在setx /?明确指出 帮帮我:

在本地系统上,由此工具创建或修改的变量将在未来的命令窗口中可用,但在当前的CMD.exe命令窗口中不可用。

要在全局环境和当前进程中执行相同的更改,您需要同时运行setxset