Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Добавления значения к уже существующей системной переменной

Ответить
Настройки темы
CMD/BAT - Добавления значения к уже существующей системной переменной

Новый участник


Сообщения: 21
Благодарности: 1

Профиль | Отправить PM | Цитировать


Всем привет. Хочу чтобы у меня одно значение дописавалось к уже существующей переменной, например системная переменная 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

 

Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Цитата Iska:
разные разделители в разных ОС у «reg.exe» »

Для "FOR" и символ табуляции является разделителем по умолчанию:
Код: Выделить весь код
for /f "tokens=1-3" %%i in ("A	B	C") do @echo %%i %%j %%k
.

Отправлено: 18:28, 13-01-2015 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Georgio, значит, я ошибся.

Отправлено: 23:23, 13-01-2015 | #12


Новый участник


Сообщения: 21
Благодарности: 1

Профиль | Отправить PM | Цитировать


спасибо за помощь

Последний раз редактировалось termitt, 14-01-2015 в 06:06.


Отправлено: 03:18, 14-01-2015 | #13


Новый участник


Сообщения: 21
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата Foreigner:
Код:
@echo off
setlocal
set "regpath=hkcu\environment"
for /f "tokens=3*" %%i in ('reg query "%regpath%" /v "path"') do call:add %%i %%j
goto:eof
:add
reg add "%regpath%" /v "path" /d "%*;C:\test" -f »
не работает..

Отправлено: 05:48, 14-01-2015 | #14


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


termitt, Скажи конкретный ключ. У меня приведенный батник работает.

Отправлено: 07:11, 14-01-2015 | #15


Новый участник


Сообщения: 21
Благодарности: 1

Профиль | Отправить PM | Цитировать


Foreigner, я в этом не силен. слегка не понял..

Отправлено: 08:12, 14-01-2015 | #16


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


termitt, В какой существующий ключ реестра необходимо дописать значение? Попробуй такой вариант с проверкой на наличие ключа:
Код: Выделить весь код
@echo off
setlocal

set "key=hkcu\environment"
set "parameter=PATH"
set "value=C:\Test"

1>nul 2>&1 reg query "%key%" /v "%parameter%" || (

    reg add "%key%" /v "%parameter%" /d "%value%"
    goto:eof

)

for /f "tokens=3*" %%i in ('reg query "%key%" /v "%parameter%"') do call:add %%i %%j

:: shutdown /l (отлогин) для применения изменений

goto:eof

:add
reg add "%key%" /v "%parameter%" /d "%*;%value%" /f
Соответственно значения переменных key, parameter и value даны в качестве примера.

Последний раз редактировалось Foreigner, 14-01-2015 в 08:52.


Отправлено: 08:40, 14-01-2015 | #17


Новый участник


Сообщения: 21
Благодарности: 1

Профиль | Отправить PM | Цитировать


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment вот сюда должна записать то есть hklm

Отправлено: 08:57, 14-01-2015 | #18


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


termitt, Ну так подставьте свои значения.

Отправлено: 09:04, 14-01-2015 | #19


Новый участник


Сообщения: 21
Благодарности: 1

Профиль | Отправить PM | Цитировать


Foreigner,
Код: Выделить весь код
@echo off
setlocal

set "key=hklm\environment"
set "parameter=PATH"
set "value=C:\Test"

1>nul 2>&1 reg query "%key%" /v "%parameter%" || (

    reg add "%key%" /v "%parameter%" /d "%value%"
    goto:eof

)

for /f "tokens=3*" %%i in ('reg query "%key%" /v "%parameter%"') do call:add %%i %%j

:: shutdown /l (отлогин) для применения изменений

goto:eof

:add
reg add "%key%" /v "%parameter%" /d "%*;%value%" /f
вот этот код добавил ничего нету. смотрю системную переменную Path ничего нету пусто отсутствует папка C:\test .

Отправлено: 09:39, 14-01-2015 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Добавления значения к уже существующей системной переменной

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход