|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Добавления значения к уже существующей системной переменной |
|
|
CMD/BAT - Добавления значения к уже существующей системной переменной
|
Новый участник Сообщения: 21 |
Всем привет. Хочу чтобы у меня одно значение дописавалось к уже существующей переменной, например системная переменная Path, которая имеет значение C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Python26\;%SystemRoot%\system32;.................... т.д и т.п и нужно добавить значение C:\ProgramFiles(x86)\Autodesk\AutoCAD 2014\ (чтобы другие не удалялись) где в просторах нашел но мне кажется его поправить и убрать все лишнее. Если кому не сложно можете показать или убрать в этом коде что надо что не надо.За ранее спасибо.
rem какой путь нужно дописать в переменную Path Set InstPath=%ProgramFiles%\Autodesk\AutoCAD 2014\ Set sw="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" Set w7= rem проверка версии (Windows 7) установленной системы Ver | Find "6.1" >Nul && Set w7=1 rem извлечение текущего содержимого переменной Path rem !ВАЖНО! - в кач-ве разделителя в первом цикле используется пробел, а во втором нужно указать rem только символ табуляции (ASCII-код символа после знака "равно" в выделенном фрагменте должен быть 09) If Defined w7 ( For /F "tokens=3* delims= " %%j In ('Reg Query %sw% /v Path') Do Set curPath=%%j %%k ) Else ( For /F "tokens=3 delims= " %%j In ('Reg Query %sw% /v Path') Do Set curPath=%%j ) rem проверка наличия дописываемого значения в переменной Path (для исключения дублирования) rem если дописываемого пути нет в переменной Path, то дополняем ее. Вообщем теперь в переменную Path он !допишет! значение C:\Program Files\Autodesk\AutoCAD 2014\ Echo "%curPath%" | Find /I "%InstPath%" >Nul || Reg Add %sw% /v Path /t REG_EXPAND_SZ /d "%curPath%;%InstPath%" /f @pause |
|
Отправлено: 10:08, 13-01-2015 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Последний раз редактировалось Iska, 13-01-2015 в 14:32. Отправлено: 12:46, 13-01-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать Существуют некоторые опасения в использовании команды "SETX" в данном случае: "Исправить переменную PATH - Batch (CMD_BAT) - CyberForum.ru". Но подтвердить или опровергнуть их не могу:
|
Отправлено: 13:19, 13-01-2015 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Я поэкспериментировал
![]() Сразу не соглашусь с: Цитата:
И это неверное утверждение: Цитата:
Проблема, как я теперь вижу, совсем в другом: как получить простым способом текущее значение «Machine» PATH, т.е. из HKLM? Переменная окружения PATH нам не гожа — она ведь представляет собой слияние обеих переменных PATH — из Machine (HKLM) и User (HKCU) разделов. Т.е., либо мы опять возвращаемся к «reg.exe» с его различным выводом в разных версиях ОС, либо… понимаем, что пора переходить на WSH/PoSH ![]() Пометил предыдущий пост, как некорректный. Во всяком случае, пока некорректный. |
||
Отправлено: 14:33, 13-01-2015 | #4 |
Ветеран Сообщения: 1758
|
Цитата:
> echo %path% | sed "s/;/\n/g" C:\Users\user\BIN\CONEMU C:\Users\user\BIN\CONEMU\ConEmu C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common C:\WINDOWS\system32 C:\WINDOWS C:\WINDOWS\System32\Wbem C:\WINDOWS\System32\WindowsPowerShell\v1.0\ C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x86 C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x64 C:\Users\user\BIN C:\Users\user\BIN\GNU\BIN C:\Users\user\BIN\SYSINTERNALS C:\Program Files (x86)\Java\jre7\bin > reg query hkcu\environment /v path | sed -r -ne "/REG/ s/(.*REG_.+\s+)(.*)/\2/" -e "s/;/\n/pg" %USERPROFILE%\BIN %USERPROFILE%\BIN\GNU\BIN %USERPROFILE%\BIN\SYSINTERNALS %ProgramFiles(x86)%\Java\jre7\bin |
||
Отправлено: 15:33, 13-01-2015 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
|
|
Отправлено: 16:47, 13-01-2015 | #6 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать извините быть может я тут многих не понял. но суть тут не в переменной Path . цель моя просто дописывать (дополнять) через точку с запятой любые значения переменной и в любой переменной будь это path или blalbla и т.д и т.п . может мне кто предложит поменьше код или проще есть вариант. или ваще оставить как есть!!
|
Последний раз редактировалось termitt, 13-01-2015 в 17:07. Отправлено: 17:00, 13-01-2015 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата termitt:
На WSH: Option Explicit
Dim strPath4Add
Dim objWshShell
Dim strPaths
Dim strPath
Dim boolFound
strPath4Add = "C:\ProgramFiles(x86)\Autodesk\AutoCAD 2014"
Set objWshShell = WScript.CreateObject("WScript.Shell")
strPaths = Trim(objWshShell.Environment("SYSTEM").Item("PATH"))
If Len(strPaths) <> 0 Then
boolFound = False
For Each strPath In Split(strPaths, ";")
If StrComp(strPath, strPath4Add, vbTextCompare) = 0 Then
boolFound = True
Exit For
End If
Next
If Not boolFound Then
strPaths = strPaths & ";" & strPath4Add
objWshShell.Environment("SYSTEM").Item("PATH") = strPaths
Else
WScript.Echo "Path [" & strPath4Add & "] already present in PATH environment variable in SYSTEM collection."
End If
Else
WScript.Echo "Can't find PATH environment variable in SYSTEM collection."
WScript.Quit 1
End If
Set objWshShell = Nothing
WScript.Quit 0
Цитата termitt:
![]() |
||
Отправлено: 17:30, 13-01-2015 | #8 |
Ветеран Сообщения: 1758
|
|
Отправлено: 17:37, 13-01-2015 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать 2Foreigner:
1. Нужен HKLM, а не HKCU. 2. В HKCU может и не быть PATH. 3. Опять-таки, разные разделители в разных ОС у «reg.exe»; в старых ОС нет параметра «-f», а есть «/f». 4. Во второй раз будет два «C:\test», в третий — три. И т.д. |
Отправлено: 18:03, 13-01-2015 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Без раскрытия системной переменной окружения | janxp | Скриптовые языки администрирования Windows | 11 | 09-02-2014 06:35 | |
CMD/BAT - Присвоение значения переменной | starav | Скриптовые языки администрирования Windows | 1 | 30-05-2013 09:23 | |
VBS/WHS/JS - Вывод значения переменной в сообщение | la_vanille_ciel | Программирование и базы данных | 3 | 09-04-2008 11:55 | |
Как изменить заголовок в уже существующей теме ? | XPurple | О сайте и форуме | 8 | 13-04-2005 07:24 | |
php деление значения строковой переменной | Guest | Вебмастеру | 4 | 14-10-2004 17:12 |
|