不知道为什么,我的
echo %path%
有很多C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\
的重复。据我所知,长%path%
不好,因为它会减慢搜索过程。删除这些重复项是否安全?
我还注意到有两种版本的路径变量:一种用于用户变量,一种用于系统变量。如果我以普通用户身份在命令提示符下键入
echo %path%
,它将显示这两个版本的串联(系统版本在前)。如果我要删除重复项,我应该删除哪个版本?
(粗体为系统版本)
C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem; C:\Windows\System32\WindowsPowerShell 1.0\;C:\Program Files (x86)\Intel\OpenCL SDK .0 in\x86;C:\Program Files (x86)\Intel\OpenCL SDK .0 中\x64;C:\Program Files\Intel\Intel(R) 管理引擎组件\DAL;C:\Program Files\Intel\Intel(R) 管理引擎组件\IPT;C:\Program Files (x86)\Intel\英特尔(R) 管理引擎组件\DAL;C:\Program Files (x86)\英特尔\英特尔(R) 管理引擎组件\IPT;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\ WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell 1.0\;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files ( x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C :\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell 1.0\;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files (x86)\Intel\OpenCL SDK .0在\x86;C:\Program Files (x86)\Intel\OpenCL SDK .0 在\x64;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel \Intel(R) 管理引擎组件\IPT;C:\Program Files (x86)\Intel\Intel(R) 管理引擎组件\DAL;C:\Program Files (x86)\Intel\Intel(R) 管理引擎组件\IPT;C:\MinGW 中;C:\Python27;C:\Users\jie\AppData\Local\Microsoft\WindowsApps
在 Microsoft Technet (Scriptcenter) 上,曾经有一个小型 PowerShellScript 用于检查重复路径:How to check for duplicate paths in PATH environment variable
(现在不见了,在原来的位置,但是 archive.org 有一个副本。)
应该在具有管理员权限的 PowerShell 环境中运行。我在每次卸载任何软件(Windows 10 x64)后都会这样做。
我还在想为什么有些进程在
PATH
环境变量中有重复的部分。
经过一些调查,问题是由 explorer.exe 启动的进程引起的。对于最初不是 explorer.exe 的子进程(或“子进程的子进程”)的进程,它不会发生。
我认为,Windows
user part
环境变量的PATH
受以下因素影响:
HKCU\Environment\Path
HKCU\Environment\1\Path
进程 explorer.exe(在用户上下文中运行)加载
PATH
环境变量的两个条目。
当HKCU\Environment\Path
存在时,我删除了测试HKCU\Environment\1\Path
。 PATH
环境变量的重复部分不再存在。
删除或修改此注册表项应该非常小心。可能你遇到了其他意想不到的问题,因为 Windows Path 环境变量会影响当前用户启动的所有新进程。
注意
Microsoft 鼓励使用 App Paths,因为路径环境变量 Path 的条目越多,Windows 用于搜索指定文件的时间就越多。使用应用程序路径,您可以为每个可执行文件名称指定可执行文件应搜索的文件夹。
更多信息:关于应用程序路径的 Microsoft 文档.
注意:由
cmd.exe
或 .cmd 或 .bat 启动的进程不会查看 App Path
键,即使您使用 start process.exe
process.exe 文件也会查看 App Path\Process.exe\Path
.
你说的路径是系统路径。它们应该保留在系统范围内的
PATH
变量中。您可以删除用户范围的 PATH
变量中的重复项,但是您应该重新启动并检查每个应用程序是否仍在运行(不是因为您删除了重复项,而是为了确保您没有错误地删除错误的内容).像往常一样,在开始之前在某处备份您的 PATH
变量。
始终可以安全地删除每个范围内的重复项。该列表在每个分号处拆分,并搜索列表中的每个结果路径。如果存在重复,在最坏的情况下,同一个搜索只会执行两次。在最好的情况下,系统可能会识别出重复项(我不确定是否会发生这种情况),但这意味着需要额外的识别工作。所以你关于放慢速度的说法在任何情况下都是正确的。
你重复的原因(如果不是你至少)可能是你安装的某个应用程序,它不正确地编辑了
PATH
变量。