如何只保留每个 PATH 条目一次?

Dmi*_*yev 7 windows environment-variables cmd.exe

我刚刚尝试向我添加一些东西,PATH并意识到它由于重复而变得不成比例:

C:\Users\user>setx Path "%Path%;C:\Python34"
WARNING: The data being saved is truncated to 1024 characters.
SUCCESS: Specified value was saved.
Run Code Online (Sandbox Code Playgroud)

当我打印该PATH值时,我意识到它充满了重复的条目(C:\Program Files\7-Zip甚至输入了 3 次),因此没有地方放置新数据。有没有办法在不手动编辑的情况下摆脱重复项,最好是不安装第三方软件?PATH也欢迎任何有关如何避免重复的建议。

我已经找到了一种解决方法,但是在PATH.

Dav*_*ill 4

有没有办法无需手动编辑即可消除重复项?

最好不安装第三方软件?

如果您不介意使用 PowerShell 脚本,则可以使用Microsoft 脚本中心的以下脚本删除重复项:

用于检查 PATH 环境变量中重复路径的脚本

有时,重复安装软件可能会在 PATH 环境变量中添加重复的条目。由于环境变量对该变量的大小有硬编码限制,因此您有可能在一段时间内对其进行限制。此脚本检查 PATH 环境变量并删除所有重复的路径条目。

$RegKey = ([Microsoft.Win32.Registry]::LocalMachine).OpenSubKey("SYSTEM\CurrentControlSet\Control\Session Manager\Environment", $True) 
$PathValue = $RegKey.GetValue("Path", $Null, "DoNotExpandEnvironmentNames") 
Write-host "Original path :" + $PathValue  
$PathValues = $PathValue.Split(";", [System.StringSplitOptions]::RemoveEmptyEntries) 
$IsDuplicate = $False 
$NewValues = @() 
  
ForEach ($Value in $PathValues) 
{ 
    if ($NewValues -notcontains $Value) 
    { 
        $NewValues += $Value 
    } 
    else 
    { 
        $IsDuplicate = $True 
    } 
} 
  
if ($IsDuplicate) 
{ 
    $NewValue = $NewValues -join ";" 
    $RegKey.SetValue("Path", $NewValue, [Microsoft.Win32.RegistryValueKind]::ExpandString) 
    Write-Host "Duplicate PATH entry found and new PATH built removing all duplicates. New Path :" + $NewValue 
} 
else 
{ 
    Write-Host "No Duplicate PATH entries found. The PATH will remain the same." 
} 
  
$RegKey.Close() 
Run Code Online (Sandbox Code Playgroud)

Source如何检查 PATH 环境变量中的重复路径