3

Я только что попытался добавить что-то в мою PATH и понял, что она выросла из-за дубликатов:

C:\Users\user>setx Path "%Path%;C:\Python34"
WARNING: The data being saved is truncated to 1024 characters.
SUCCESS: Specified value was saved.

Когда я напечатал значение PATH , я понял, что оно заполнено дублирующимися записями (C:\Program Files\7-Zip даже попал в 3 раза), поэтому нет места для новых данных. Есть ли способ избавиться от дубликатов без ручного редактирования и желательно без установки стороннего программного обеспечения? Любые советы о том, как избежать дубликатов PATH приветствуются.

Я уже нашел обходной путь , но все же кажется неоптимальным иметь дубликаты в PATH .

1 ответ1

3

Есть ли способ избавиться от дубликатов без ручного редактирования?

Желательно без установки стороннего софта?

Если вы не возражаете против использования сценария 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() 

Source Как проверить наличие повторяющихся путей в переменной окружения PATH

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .