1.1.   Основные стандартные переменные окружения, их назначение.
1.2.   Контексты переменных окружения (System, user, process) , их приоритетность.
1.3.   Команды set, echo, path. Обратить внимание на контекст, в котором команда set задает переменную.

Переменные среды в Windows

Переменные среды прописываются в реестре Windows. Они могут использоваться в командной строке и в адресной строке проводника.

 Классификация

Переменные среды Windows делятся на две категории:

  Синтаксис

При обращении к некоторой переменной среды используется следующий синтаксис:

%<имя переменной>%

Также возможно выделение из переменной её части, например печать различных частей переменной VAR

Присваиваем значение переменной VAR

set VAR=1234ABCD

Печатаем все содержимое переменной VAR

echo %VAR%

Печатаем первые четыре символа переменной VAR

echo %VAR:~0,4%

Печатаем символы с третьего по шестой переменной VAR

echo %VAR:~2,4%

Печатаем последние четыре символа переменной VAR

echo %VAR:~-4%

  Некоторые переменные среды

Список переменных среды Windows можно узнать, набрав в командной строке: set или нажав кнопку «Переменные среды» на вкладке «Дополнительно» в диалоговом окне «Свойства системы» (Мой компьютер->Свойства).

Имя Назначение Пример
%AllUsersProfile% Указывает путь до папки All Users, в которой хранятся общие для всех пользователей настройки рабочего стола и главного меню. C:\Documents And Settings\All Users
%AppData% Указывает путь до папки Application Data текущего пользователя, в которой хранятся настройки некоторых программ. C:\Documents And Settings\Администратор\Application Data
%CommonProgramFiles% Указывает путь до папки Common Files, в которой хранятся общие для установленных программ файлы. C:\Program Files\Common Files
%ComputerName% Хранит имя компьютера в сети. Vasya
%ComSpec% Хранит путь до командного процессора Windows. C:\Windows\System32\cmd.exe
%HomeDrive%, %SystemDrive% Хранит имя системного диска. C:
%HomePath%, %UserProfile% Хранит путь до домашней папки пользователя C:\Documents And Settings\Администратор
%WinDir% Хранит путь до папки WINDOWS C:\Windows
%SystemRoot% Хранит путь до системной папки (где хранится ядро и т. п.) C:\Windows\
%ProgramFiles% Хранит путь до папки с установленными приложениями C:\Program Files\

В современных ОС компании Microsoft, построенных на платформе NT, для получения информации о системе используются следующие переменные (Полужирным выделен текст, относящийся только к Windows Vista/7):

Название Тип Описание
ALLUSERSPROFILE локальная Возвращает размещение профиля «All Users». В Windows 7 возвращает путь к папке C:\ProgramData\.
APPDATA системная Возвращает используемое по умолчанию размещение данных приложений. В Windows XP это C:\Documents and Settings\%UserName%\Application Data. В Windows 7 - C:\Users\%UserName%\AppData\Roaming.
CD локальная Указывает путь к текущему каталогу. Идентична команде CD без аргументов.
CMDCMDLINE локальная Точная команда, использованная для запуска текущего cmd.exe.
CMDEXTVERSION системная Версия текущего Command Processor Extensions.
COMMONPROGRAMFILES системная Расположение каталога "Common Files" (обычно %ProgramFiles%\Common Files).
COMMONPROGRAMFILES(x86) системная Расположение каталога "Common Files" в Program Files (x86) для 64-разрядной ОС (обычно %ProgramFiles(x86)%\Common Files).
COMPUTERNAME системная Имя компьютера
COMSPEC системная Путь к исполняемому файлу командного процессора (shell).
DATE системная Возвращает текущую дату. Использует тот же формат, что и команда date /t. Создаётся командой Cmd.exe.
ERRORLEVEL системная Возвращает код ошибки последней использовавшейся команды. Значение, не равное нулю, обычно указывает на наличие ошибки.
HOMEDRIVE системная Возвращает имя диска локальной рабочей станции, связанного с основным каталогом пользователя. Задаётся на основании расположения основного каталога. Основной каталог пользователя указывается в оснастке «Локальные пользователи и группы».
HOMEPATH системная Возвращает полный путь к основному каталогу пользователя. Задаётся на основании расположения основного каталога. Основной каталог пользователя указывается в оснастке «Локальные пользователи и группы».
HOMESHARE системная Возвращает сетевой путь к общему основному каталогу пользователя. Задаётся на основании расположения основного каталога. Основной каталог пользователя указывается в оснастке «Локальные пользователи и группы».
LOCALAPPDATA системная Возвращает используемое по умолчанию локальное размещение данных приложений (C:\Users\%UserName%\AppData\Local).
LOGONSERVER локальная Имя контроллера домена, использовавшегося для авторизации текущего пользователя.
NUMBER_OF_PROCESSORS системная Количество процессоров в системе.
OS системная Название операционной системы. Windows XP и Windows 2000 отображаются как Windows_NT.
PATH системная Указывает путь поиска исполняемых файлов.
PATHEXT системная Возвращает список расширений файлов, которые рассматриваются операционной системой как исполняемые.
PROCESSOR_ARCHITECTURE системная Архитектура процессора. Возможные варианты: x86, IA64, AMD64.
PROCESSOR_IDENTIFIER системная Описание процессора (в Интернете часто встречается ошибочное написание PROCESSOR_IDENTFIER - пропущена буква).
PROCESSOR_LEVEL системная Номер модели процессора.
PROCESSOR_REVISION системная Ревизия процессора.
PROGRAMDATA системная Возвращает путь к каталогу C:\ProgramData\ (аналогично ALLUSERSPROFILE).
PROGRAMFILES системная Путь к каталогу Program Files.
PROGRAMFILES(x86) системная Путь к каталогу Program Files (x86) в 64-разрядных системах для приложений архитектуры x86.
PROMPT локальная Возвращает параметры командной строки для текущего интерпретатора. Создаётся командой Cmd.exe.
PUBLIC системная В Windows 7 возвращает путь к каталогу C:\Users\Public.
RANDOM системная Случайное десятичное число от 0 до 32767. Генерируется Cmd.exe.
SESSIONNAME ? Значение по умолчанию "Console".
SYSTEMDRIVE системная Диск, на котором расположен корневой каталог Windows.
SYSTEMROOT системная Путь к корневому каталогу Windows.
TEMP or TMP системная и локальная Возвращает временные каталоги, по умолчанию используемые приложениями, которые доступны пользователям, выполнившим вход в систему. Некоторые приложения требуют переменную TEMP, другие — переменную TMP. Потенциально TEMP и TMP могут указывать на разные каталоги, но обычно - совпадают.
TIME системная Возвращает текущее время. Использует тот же формат, что и команда time /t. Создаётся командой Cmd.exe. Дополнительные сведения о команде time см. в разделе Time.
USERDOMAIN локальная Имя домена, которому принадлежит текущий пользователь.
USERNAME локальная Имя текущего пользователя.
USERPROFILE локальная Путь к профилю текущего пользователя.
WINDIR системная Каталог, в котором установлена Windows.

[править] Работа с переменными

Чтобы получить доступ к значению переменной, необходимо поставить знак % перед её названием и после него, например:

echo %PROCESSOR_ARCHITECTURE%

Чтобы установить значение переменной:

SET TEMP=C:\TEMP

Кроме того, с переменными среды можно работать, нажав кнопку «Переменные среды» на вкладке «Дополнительно» в диалоговом окне «Свойства системы» (контекстное меню значка «Мой компьютер» → пункт «Свойства»).

Также необходимо помнить, что, в отличие от UNIX-систем, в DOS и в стандартной командной строке Windows переменные среды не наследуются запускаемыми процессами, а используются совместно. Это позволяет, например, возвращать через них результаты работы программ, но, с другой стороны, создаёт возможность порчи или переполнения. Особенно актуально переполнение для переменной PATH, поскольку она часто дополняется при работе различных скриптов. При возникновении такого переполнения достаточно просто перезапустить интерпретатор командной строки. Интерпретаторы, портированные из UNIX-систем (например, Z-shell), такой проблеме не подвержены.

 

Команда PATH

Указывает, в каких каталога MS-DOS должна искать выполняемые файлы. По умолчанию маршрут поиска ограничивается только текущим каталогом.

     PATH [[диск:]маршрут[;...]]

Для выводе текущего маршрута поиска дайте команду:

     PATH

Чтобы сбросить все установки маршрута и оставить только заданный по умолчанию, используйте команду:

     PATH ;

Параметр [диск:]маршрут задает диск, каталог и подкаталоги для поиска.

Поиск по заданным маршрутам MS-DOS всегда начинает с текущего каталога. Максимальная длина команды PATH ограничена 127 символами. Для задания более длинных маршрутов используйте команды SUBST и APPEND /X:ON command.

В одном каталоге вы можете хранить файлы с одинаковыми именами, но разными расширениями. MS-DOS ищет выполняемые файлы по расширениям в следующем порядке: .COM, .EXE и .BAT. Поэтому, чтобы выполнить файл .BAT с тем же именем, что и файл .EXE, нужно указать его имя полностью. Поиск по каталогам происходит в том порядке, в котором они заданы в маршруте. Если в маршруте PATH задается несколько каталогов, то они разделяются точкой с запятой, например:

     path c:\user1\progs; c:\sys\suppl; d:\utils\dos

Команду PATH удобно поместить в файл AUTOEXEC.BAT. При этом MS-DOS автоматически инициирует заданный маршрут поиска при каждом запуске системы.

Команда SET

Выводит на экран, устанавливает или отменяет переменные операционной среды MS-DOS, которые используются для управления поведением некоторых командных файлов и программ, а также управляют работой MS-DOS. Команда SET часто используется в файлах AUTOEXEC.BAT или CONFIG.SYS для установки переменных при каждом запуске MS-DOS.

     SET [переменная=[строка]]

Параметр "переменная" задает устанавливаемую или модифицируемую переменную среды, "строка" задает связываемую с конкретной переменной строку.

Для вывода текущих установок переменной используйте команду SET без параметров. Об установке переменных операционной среды, используемых для управления операциями MS-DOS, рассказывается в описании команд PATH, PROMPT, SHELL и DIR.

Установки переменных среды обычно включают в себя спецификацию переменных COMSPEC и PATH, которые MS-DOS применяет для поиска программ на дисках. Часто используются также переменные PROMPT и DIRCMD (см. команды PROMPT и DIR).

Когда в команде SET задается значение переменной и строки, MS-DOS добавляет заданное значение к операционной среде и связывает строку с данной переменной. Если переменная уже существует, то новое значение строки заменяет старое. Если вы задаете только переменную и знак равенства (без строки), MS-DOS сбрасывает связанное с переменной значение строки.

Команда SET часто задается в командных файлах, при этом переменные можно использовать таким же образом, как нумерованные переменные с %0 по %9, то есть задавать их в качестве ввода команды SET. Например, чтобы добавить маршрут к переменной PATH, можно задать в командном файле команду set path=%1;%path%. При вызове переменной из командного файла значение нужно заключить в символы %.

Например, чтобы установить переменную среды INCLUDE в значение D:\SYS, наберите команду set include=d:\sys. После этого вы можете использовать строку D:\SYS в командном файле, заключив имя INCLUDE в %, например, включить в него для вывода содержимого связанного с INCLUDE каталога команду dir %include%. При обработке этой команды MS-DOS заменяет %INCLUDE% строкой D:\SYS.

Иногда после выполнения команды SET MS-DOS может выводить сообщение:

     Out of environment space

Это означает нехватку доступного пространства операционной среды (из-за этого в нее нельзя включить новую переменную). О том, как его увеличить, рассказывается в описании COMMAND.

 

Команда ECHO

Выводит на экран или скрывает текст командного файла при его выполнении. Показывает также, включено или выключено средство эхоотображения. При запуске командного файла MS-DOS обычно отображает выполняемые команды на экране. Этот режим можно выключить или включить.

     ECHO [ON OFF]

Чтобы использовать команду для вывода сообщения, запишите:

     echo [сообщение]

Параметр ON OFF определяет, нужно ли включить или выключить эхоотображение. Чтобы вывести на экран текущую установку, задайте команду ECHO без параметра. "Сообщение" задает текст выводимого на экран сообщения.

О приостановке выполнения командного файла рассказывается в описании команды PAUSE.

Команду ECHO с параметром сообщения полезно использовать при выключенном эхоотображении. Для вывода длинного сообщения, превышающего размер строки, задайте несколько команд ECHO.

При указании команды ECHO OFF в командной строке командная подсказка не выводится на экран. Чтобы вновь ее увидеть, наберите ECHO ON.

Для предотвращения эхоотображения конкретной строки вы можете задать перед ней в командном файле символ @. Чтобы отобразить на экране пустую строку, наберите команду ECHO с точкой (ECHO.). Пробел между ними не указывается.

При использовании команды ECHO нельзя указывать символ конвейеризации (|) или перенаправления (< или >).

Бесплатный хостинг uCoz