С риском некоторых отрицательных голосов, пока эксперт не предоставит разумный способ сделать это,ниже удаляется определенный путь из переменной среды, если он существует, чтобы его можно было добавить снова:
set str=%path%
:: str is the same with path
set str=%str:;C:\Path\To\Add=%
:: ";c:\path\to\add" is now removed from str
setx Path "%str%;c:\path\to\add" -m
:: proceed with setting the path
Это несет в себе риск удаления строки, если она на самом деле является частью пути, например c:\path\to\add\somefolder
.Также, если путь на самом деле заканчивается \
, или это первая запись, и он фактически не начинается с ;
и т. Д.
Различные формы могут вызываться последовательно, чтобы обойти некоторые из этих,
set str=%str:;C:\Path\To\Add\;=;%
set str=%str:;C:\Path\To\Add;=;%
set str=%str:;C:\Path\To\Add\=%
set str=%str:C:\Path\To\Add\;=%
set str=%str:;C:\Path\To\Add=%
Но, ААМОФ, я не уверен, что это нормальный способ сделать это ..