Windows CMD - Сбросить переменную пути из командного файла? - PullRequest
6 голосов
/ 17 августа 2011

У меня есть пакетный файл, который изменяет переменную PATH, добавляя несколько адресов.Когда пользователь выходит из системы, затем PATH сбрасывается до исходного значения (до того, как был запущен командный файл).Это нормально.

Однако, если пакетный файл запускается более одного раза, одни и те же значения повторно добавляются, и я получаю слишком длинную избыточную переменную PATH, которая становится длиннее после каждого запуска пакета.

Я бы хотел сбросить переменную до того, что есть, когда пользователь входит в систему, до того, как значения будут добавлены.Я полагаю, что решение состоит в том, чтобы записать исходное значение во временный файл и прочитать его обратно, но есть ли лучший способ сделать это?

Ответы [ 3 ]

6 голосов
/ 17 августа 2011

Вместо записи исходного значения во временный файл, вы можете записать его в другую переменную среды:

if not defined ORIGINAL-PATH set ORIGINAL-PATH=%PATH%
set PATH=c:\extra\stuff;%ORIGINAL-PATH%

но было бы лучше явно проверить, находится ли нужная строка в PATH или нет, например:

echo %PATH% | findstr /c:"c:\extra\stuff;" > nul || set PATH=c:\extra\stuff;%PATH%
6 голосов
/ 17 августа 2011

Поместите @SETLOCAL в начало вашего командного файла.

Любые изменения, внесенные в среду, будут восстановлены при выходе из пакетного файла.

Выполните setlocal /? для более подробной информации.

1 голос
/ 04 мая 2014

Я долго искал решение подобной проблемы.В итоге я использовал путь pathmgr.cmd, который я скачал с:

http://gallery.technet.microsoft.com/Batch-Script-To-Manage-7d0ef21e

Чтобы использовать его для очистки пользовательского PATH, можно использовать следующие параметры:командная строка:

pathmgr.cmd / clean / user / p / y

Также доступно много других полезных опций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...