Ответ 1
Как упоминалось выше, используйте замедленное расширение в основной строке и регулярное расширение в строке замены. Запустите эту партию как Admin из ярлыка или из Admin Cmd Prompt:
@echo off
setLocal EnableDelayedExpansion
set "comPath=D:\Package\Libraries\Lib"
set "envPath=%PATH%" & set "Separator="
if not "%envPath:~-1%" == ";" set "Separator=;"
if "!envPath:%comPath%=!"=="%envPath%" (
setx PATH "%PATH%%Separator%%comPath%" /M )
timeout 5
exit /b
Обратите внимание, что обновленный PATH будет перечитываться из реестра только после перезапуска Cmd. Если вам нужно использовать измененную PATH в той же партии, используйте SET вместо SETX, чтобы временно установить PATH для этого сеанса Cmd.
В аналогичной конструкции, если ваш дополнительный путь comPath
установлен внутри цикла IF или FOR, вместо этого используйте call set "PATH=%%envPath:!comPath!=%%"
.