Добавление папки в PATH

Автор: Вадим Стеркин aka Vadikan
Иcточник: unattended.oszone.net
Опубликована: 05.01.2008

PATH является переменной среды и представляет собой список папок, который используется операционной системой для поиска исполняемых файлов (*.EXE). На практике, если папка добавлена в PATH, исполняемые файлы можно запускать из командной строки без указания полного пути к ним.

В рамках автоустановки Windows нас, конечно, интересует вопрос добавления папки в PATH из командной строки во время установки системы.

Команда PATH

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

path=%PATH%;"%systemdrive%\system32\mytools";"%programfiles%\Opera"

Утилита pathman

Добавляет указанные папки в PATH на постоянной основе. Ключ /as добавляет в системный PATH, /au - в пользовательский; /rs и /ru соответственно убирают папки из системного и пользовательского PATH. Утилита pathman входит в Windows 2000 Resource Kit, но вы можете загрузить ее по прямой ссылке

pathman /as "%systemdrive%\system32\mytools";"%programfiles%\Opera"

Совет. Вы можете собрать все любимые утилиты командной строки в одну папку и добавить ее в PATH. В приведенном выше примере мои утилиты собраны в %systemdrive%\system32\mytools.

AutoIt скрипт


;какой путь нужно дописать в переменную Path
$addtopath=@ProgramFilesDir&"\7-Zip"
;извлечение текущего содержимого переменной Path
$curpath=RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment","Path")
;если дописываемого пути нет в переменной Path, то дополняем ее
If Not StringInStr ($curpath,$addtopath) and Not StringInStr ($curpath,"%ProgramFiles%\7-Zip") Then
    RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment","Path","REG_EXPAND_SZ",$curpath & ";" & $addtopath)
EndIf

Пакетный файл

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

Ссылки

Статья Переменные среды


Ссылка: http://www.oszone.net/6157/