Предположим, мой ПУТЬ C:\WINDOWS\system32\;C:\Program Files\Important\
SET NEW_PATH=C:\My\Dir\
SETX PATH "%PATH%;%NEW_PATH%"
Результаты на пути:
C:\WINDOWS\system32\;C:\Program Files\Important\;C:\My\Dir"
Обратите внимание на кавычки в конце пути. Это как если бы обратная косая черта в конце% NEW_PATH% экранировала последнюю кавычку. Мне нужны кавычки, потому что на моем пути есть пробелы, но я не хочу, чтобы обратная косая черта интерпретировалась как escape-символы.
Как правильно включить мой PATH в вызов SETX?
Не ставьте обратную косую черту в конце %NEW_PATH%
.
Если вместо того, что вы контролируете, вы для начала получили случайный ввод, вы можете выполнить одно из следующих действий:
Оставьте закрывающую кавычку. В некоторых случаях это работает:
> setx foo "bar baz
> echo %foo%
bar baz
Но у других дела обстоят не так хорошо:
> setx foo "Some stuff "with" embeddded quotes
> echo %foo%
Some stuff with embeddded quotes
Однако у вас уже есть эта проблема с самого начала, поэтому то, что вы там сделали, было в лучшем случае опасным, поскольку оно уничтожило бы цитируемые пути. (что вам нужно, если ваш путь включает точку с запятой).
Это приводит нас к следующему варианту:
Правильно избегайте всего, что входит в команду:
set NEW_PATH=C:\I\Hate\User\Dirs\In\The\Root\
rem Note the extra quotation marks; we're constructing the complete
rem argument to setx here.
set NEW_PATH_VAR="%PATH%;%NEW_PATH%"
rem The great escape
set NEW_PATH_VAR=%NEW_PATH_VAR:"=\"%
setx PATH %NEW_PATH_VAR%
Если NEW_PATH
не содержит пробелов, то цитировать его не нужно:
SET NEW_PATH=C:\My\Dir\
SETX PATH "%PATH%";%NEW_PATH%
Если NEW_PATH
действительно содержит пробелы, вы можете использовать буквальное значение и снова не указывать последнюю обратную косую черту:
SETX PATH "%PATH%;C:\My Dir"\