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

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

Ответить
Настройки темы
CMD/BAT - [решено] Добавление пути(ей) в системные переменные (path) с помощью cmd-файла

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


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

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


Добрый день!
Возникла такая задача. Подскажите, как реализовать сие.
Необходимо с помощью cmd-файла добавить в (переменные среды-системные переменные) в строку (path) путь (возможно несколько путей или сетевые путь(и)).
Они ,как я помню, разделяются с помощью ;.
Я попытался через cmd-файл:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d %\\server\folder\folder1\%
Но она заменяет уже существующий path.
А нужно лишь добавить.
Заранее благодарю за помощь.

Отправлено: 11:32, 25-12-2007

 


Administrator


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

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


PHP код: Выделить весь код

@echo off

rem какой путь нужно дописать в переменную Path
set addtopath
=%ProgramFiles%7-Zip
rem извлечение текущего содержимого переменной Path
rem 
!ВАЖНО! - в кач-ве разделителя нужно указать только символ табуляции
rem 
(ASCII-код символа после знака "равно" в выделенном фрагменте должен быть 09)
for /
"tokens=3 delims=    " %%j in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path') do (set curpath=%%j)
rem проверка наличия дописываемого значения в переменной Path (для избежания дублирования)
for /
%%j in ('echo %curpath% ^| find /C /I "%addtopath%"') do (set isinpath=%%j)
rem если дописываемого пути нет в переменной Pathто дополняем ее
if %isinpath% == (
    
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /"%curpath%;%addtopath%" /f


Источник

-------
FAQ по Windows 10 .::. Настройка Центра обновления в Windows 10 .::. Чистая установка Windows 10 – пошаговая инструкция

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:36, 25-12-2007 | #2



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

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


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


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

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


Не нашёл здесь на сайте поэтому напишу сюда, вдруг кому ещё пригодится.
Вобщем проблема была в том что этот скрипт на windows 7 не отрабатывал, пытался его подправить но ничего не получилось, пришлось искать что-то похожее на VBscript и править его, в итоге вот скрипт работает и на ХР и на 7. Проверяет есть ли уже данное значение в переменной Path и если нету то дописывает:

Dim ExistingPath, NewPath, PathElement, PathExists, OldPath
Set oShell = WScript.CreateObject("WScript.Shell")
Set oEnv = oShell.Environment("SYSTEM")
' Строчка/папка которую надо добавить у меня это %Program Files%
PathToAdd = "%Program Files%"

OldPath = Split(oENV("path"), ";", -1, vbTextCompare)
PathExists = False
For Each PathElement In OldPath
If StrComp(PathElement, PathToAdd, vbTextCompare) = 0 Then
PathExists = True

Exit For
End If
Next

If Not PathExists Then


ExistingPath = oEnv("PATH")
' добавляем нашу строчку у меня это %Program Files%
NewPath = ExistingPath & ";" & "%Program Files%"
oEnv("PATH") = NewPath


End If

Отправлено: 10:22, 08-11-2010 | #3


Аватара для gora

Ушёл из жизни


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

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


Цитата LITBe:
проблема была в том что этот скрипт на windows 7 не отрабатывал »
Подправил, теперь работает и на Win 7
Код: Выделить весь код
@Echo Off
rem какой путь нужно дописать в переменную Path
Set InstPath=%ProgramFiles%\7-Zip

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, то дополняем ее
Echo "%curpath%" | Find /I "%InstPath%" >Nul || Reg Add %sw% /v Path /t REG_EXPAND_SZ /d "%curpath%;%InstPath%" /f
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:18, 08-11-2010 | #4


Аватара для Fresh96

Старожил


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

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


gora, не могли бы Вы модифицировать cmd, таким образом, чтобы можно было добавить сразу 3 пути в path.
Не очень охота запускать cmd три раза с разными путями.

Заранее спасибо.

Отправлено: 16:37, 26-11-2011 | #5


Аватара для gora

Ушёл из жизни


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

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


Цитата Fresh96:
сразу 3 пути в path »
Код: Выделить весь код
@Echo Off
rem список путей, которые нужно дописать в переменную Path
For %%a In (
	"%ProgramFiles%\7-Zip"
	"%ProgramFiles%\EmEditor"
	"%ProgramFiles%\WinRAR"
) Do Call :_addPath %%a
Exit

:_addPath
Set sw="HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
For /F "tokens=2*" %%j In ('Reg Query %sw% /v Path ^| Find /I "Path"') Do Set type=%%j& Set curpath=%%k
Echo "%curpath%" | Find /I "%~1" >Nul && GoTo :EOF
Reg Add %sw% /v Path /t %type% /d "%curpath%;%~1" /f
GoTo :EOF

Последний раз редактировалось gora, 05-08-2012 в 15:20.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:18, 26-11-2011 | #6


Аватара для CyberMuesli

Старожил


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

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


1. В win7 есть команда setx

2. Как в WinXP сделать, чтобы новый путь появился в окружении (он появляется в реестре, в свойствах компьютера, но не в самом окружении) без перезагрузки компьютера?

-------
Кибер Мюсли


Отправлено: 23:40, 18-06-2012 | #7


Старожил


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

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


Вы сами ответили на свой вопрос – скопировать на ХР файл setx.exe

Отправлено: 00:01, 19-06-2012 | #8


Ветеран


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

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


Windows 2000 Resource Kit Tools for administrative tasks
Download: Windows 2000 Resource Kit Tool : SetX (setx.exe) - Microsoft Download Center - Download Details
Это сообщение посчитали полезным следующие участники:

Отправлено: 04:02, 19-06-2012 | #9


Аватара для Mancoffee

Старожил


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

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


gora, это работает, только комментарий тоже в Path добавляет .

Отправлено: 14:51, 05-08-2012 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBA - Системные переменные windows в VB.NET ProgrammerPC Программирование и базы данных 1 29-11-2009 02:22
CMD/BAT - [решено] Помогите запустить CMD-файл из CMD-файла с параметрами Oleg48 Скриптовые языки администрирования Windows 2 18-11-2009 11:08
CMD/BAT - помогите создать сетевое подключение с помощью cmd-файла Oleg48 Скриптовые языки администрирования Windows 4 18-10-2009 11:24
[решено] Знатокам cmd. Составные переменные?!! Spooner Microsoft Windows NT/2000/2003 1 14-05-2009 08:34
Переменные среды и пути ярлыков Igor99999 Microsoft Windows 2000/XP 0 22-05-2007 16:39




 
Переход