Для одного CMD
сеанса я могу легко установить новый путь:SET PATH=%PATH%;"insert custom path here"
При этом в командном файле не учитывается, включен ли пользовательский путь. Как избежать дублирования (т. Е. Проверить, содержится ли оно в «строке» PATH).
Примечания:
- Связанный: Как добавить пользовательские переменные среды в системную переменную PATH в Windows 7?
- Связанный: Как я могу навсегда добавить запись в системную переменную PATH через командную строку?
- Тот же вопрос для UNIX: добавьте каталог в $ PATH, если его там еще нет
- Некоторые операции с CMD String объясняются: http://ss64.com/nt/syntax-replace.html
windows
command-line
path
Хорст Уолтер
источник
источник
Ответы:
Похоже на ответ MaddHackers, просто более компактно.
echo %path%|find /i "%np%">nul || set path=%path%;%np%
%np%
это ваш новый путь, конечно, вы можете использовать литералы вместо этого. Что он делает:echo %path%|find /i "%np%">nul
ищет строку в существующем пути, отбрасывая вывод.||
означает «выполнить при ошибке», значит: « Найти путь для строки, которую нужно добавить, и, если она не найдена, добавить ее».Изменить: Как правило, не требуется заключать в кавычки пути, даже те, которые содержат пробелы, но если вы хотите их заключить в кавычки , эта версия будет работать с путями в двойных кавычках:
echo %path%|find /i "%np:"=%">nul || set path=%path%;%np%
Изменить: изменено
findstr /i /c:
наfind /i
asfindstr
может неверно истолковывать некоторые последовательности, как отмечено KubaOber в комментарияхисточник
%np%
содержите кавычки - да, это приведет к неправильному поведению.echo %path%|findstr /i /c:"my path">nul || set path=%path%;"my path"
) должно работать нормально.echo d\. | findstr /c:"d\."
терпит неудачу, ноecho d\. | find "d\."
преуспеваетЯ знаю, что это грязно, но это должно работать:
где
%checkstr%
строка для проверки в PATH и%newpath%
новая PATH для добавления к текущей переменной PATH.Надеюсь, что это поможет, и я уверен, что есть более простой способ, но сейчас это должно сработать.
РЕДАКТИРОВАТЬ
Так что если вы не хотите добавлять инструменты UNIX в Windows, вы можете попробовать этот пакетный синтаксис:
Тьфу, не красивее, и это можно сделать одной строкой, если вы можете заставить команду find из pipe работать в качестве подкоманды в операторе if ...
источник
Сценарий, основанный на ответе "wmz":
источник