Команда SET используется для просмотра и изменения переменных среды окружения в командной строке Windows. Переменные окружения — это переменные, принимаемые значения которых характеризуют среду, в которой выполняется текущая программа — пути системных файлов, сведения об аппаратных средствах, каталоги пользователя и т.п. Значения переменных среды формируются в процессе загрузки Windows, регистрации пользователя в системе, при выполнении отдельных процессов или с помощью команды SET . Для просмотра значения, принимаемого конкретной переменной можно воспользоваться командой :
SET переменная
SET PATH — отобразить значение переменной PATH
Для создания новой переменной, или изменения значения существующей, используется команда :
переменная — Имя переменной среды.
строка — Строка символов, присваиваемая указанной переменной.
SET MyName=Vasya — установить значение переменной MyName
SET path=C:progs;%path% — изменить значение переменной PATH , добавив в начало строки C:progs
Значение, принимаемое переменной , доступно для обработки в командных файлах, при использовании ее имени, заключенного в знаки процента — % . Например команда выдачи текста на дисплей ECHO в виде:
ECHO date — выведет на экран слово "date", а команда
ECHO %date% выведет на экран значение переменной date , т.е. текущую дату в формате операционной системы.
Команда SET без параметров используется для вывода текущих значений переменных среды.
ALLUSERSPROFILE=C:ProgramData
APPDATA=C:UsersUsrAppDataRoaming
CommonProgramFiles=C:Program FilesCommon Files
COMPUTERNAME=TEST7
ComSpec=C:windowssystem32cmd.exe
FP_NO_HOST_CHECK=NO
HOMEDRIVE=C:
HOMEPATH=UsersUsr
LOCALAPPDATA=C:UsersUsrAppDataLocal
LOGONSERVER=\TEST7
NUMBER_OF_PROCESSORS=2
OS=Windows_NT
Path=C:windowssystem32;C:windows;
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS; .VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 15 Model 3 Stepping 4, GenuineIntel
PROCESSOR_LEVEL=15
PROCESSOR_REVISION=0304
ProgramData=C:ProgramData
ProgramFiles=C:Program Files
PROMPT=$P$G
PSModulePath=C:windowssystem32Windows PowerShellv1.0Modules
PUBLIC=C:UsersPublic
SystemDrive=C:
SystemRoot=C:windows
TEMP=C:UsersUsrAppData LocalTemp
TMP=C:UsersUsrAppData LocalTemp
USERDOMAIN=test7
USERNAME=Usr
USERPROFILE=C:UsersUsr
windir=C:windows
Кроме переменных, отображаемых в списке, при вызове команды SET, существуют и другие, значения которых изменяется динамически:
%CD% — принимает значение текущего каталога.
%DATE% — принимает значение текущей даты.
%TIME% — принимает значение текущего времени.
%RANDOM% — значение случайного числа в диапазоне между 0 и 32767.
%ERRORLEVEL% — текущее значение ERRORLEVEL, специальной переменной, которая используется в качестве признака результата выполнения программы.
%CMDEXTVERSION% значение версии расширенной обработки команд CMD.EXE.
%CMDCMDLINE% — раскрывается в исходную командную строку, которая вызвала командный процессор .
Если при вызове команды SET указать только часть имени, то будет выведен список переменных, имена которых начинаются с указанной строки. Например:
SET U — выведет значения всех переменных, имена которых начинаются с ‘U’.
Команда SET поддерживает два дополнительных ключа:
SET /A выражение
SET /P variable=[promptString]
Ключ /A указывает, что строка справа от знака равенства является числовым выражением, значение которого вычисляется. Обработчик выражений очень прост и поддерживает следующие операции, перечисленные в порядке убывания приоритета:
() * / % + — > & ^ | = , |
— группировка — арифметические операторы — арифметические операторы — двоичный сдвиг — двоичное И — двоичное исключающее ИЛИ — двоичное ИЛИ — присвоение — разделитель операторов |
При использовании любых логических или двоичных операторов необходимо заключить строку выражения в кавычки. Любые нечисловые строки в выражении рассматриваются как имена переменных среды, значения которых преобразуются в числовой вид перед использованием. Если переменная с указанным именем не определена в системе, вместо нее подставляется нулевое значение. Это позволяет выполнять арифметические операции со значениями переменных среды, причем не нужно вводить знаки % для получения значений. Если команда SET /A вызывается из командной строки, а не из пакетного файла, она выводит окончательное значение выражения. Слева от любого оператора присваивания должно стоять имя переменной среды. Числовые значения рассматриваются как десятичные, если перед ними не стоит префикс:
0x — для шестнадцатеричных чисел
0 — для восьмеричных чисел.
Пример использования префиксов:
SET /A REZ=0xA+012
ECHO %REZ%
В данном командном файле значение переменной REZ вычисляется сложением числа 10, представленного в шестнадцатеричном виде ( 0xA ) и числа 10 , представленного в восьмеричном ( 012 ).
Ключ /P позволяет установить значение переменной для входной строки, введенной пользователем. Показывает указанное приглашение promptString перед чтением введенной строки. Приглашение promptString может быть пустым. Данный ключ позволяет организовать диалог с пользователем в командном файле:
@ECHO OFF
SET /P NAME=Введите имя пользователя:
SET /P pass=Введите пароль:
ECHO Имя пользователя — %NAME% , Пароль — %PASS%
В командных файлах довольно часто требуется работать с частью значения, принимаемого переменной, для чего используются подстановочные значения:
переменная:строка1=строка2 — заменяет в принимаемом значении переменной строку1 на строку2
Следующий командный файл использует замену символа "точка" на символ "тире" в значении переменной, соответствующем текущей дате:
@ECHO OFF
set tm=%DATE%
ECHO Дата1 = %tm%
SET tm=%DATE:.=-%
ECHO Дата2 = %tm%
Для выделения части значения, принимаемого переменной, используется следующая конструкция:
x,y — где x — число пропускаемых символов от начала строки, а y — количество символов, используемых в качестве значения переменной.
Следующий пример использует отображение текущего времени без секунд и долей секунд (только первые 5 символов из стандартного значения переменной TIME):
@ECHO OFF
set tm=%TIME%
ECHO Время1 = %tm%
SET tm=%TIME:
0,5%
ECHO Время2 = %tm%
Если значение y ( длина ) не указана, то используется оставшееся до конца строки значение переменной. Если значение y отрицательно, то используется часть строки значения переменной от конца. Предыдущий пример можно изменить , указав, что в принимаемом значении времени отбрасываются 6 символов от конца:
@ECHO OFF
set tm=%TIME%
ECHO Время1 = %tm%
SET tm=%TIME:
Возможно использование число пропусков не задано, и используется отрицательное число, то принимаемое значение будет частью переменной от конца строки:
-10% — извлечет последние 10 символов переменной PATH
. Нулевое значение можно не указывать, сохраняя формат подстановки:
0,-2% эквивалентно %PATH:
При использовании переменных окружения в командных файлах существует определенное ограничение, связанное с тем фактом, что присваиваемое значение остается без изменения при его модификации внутри группы команд, задаваемой скобками, например в командах IF или FOR . Для обхода данного ограничения используется запуск командного процессора с параметром /V:ON и вместо знаков процента, для получения принимаемого переменной значения, используются восклицательные знаки. Кроме того, существует возможность использовать стандартный запуск командного процессора, но с локальным включением данного режима командой :
Разница в результатах использования значений переменных довольно наглядно демонстрируется следующим командным файлом:
Setlocal EnableDelayedExpansion
@ECHO OFF
set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "!VAR!" == "after" @echo Со знаком процента=%VAR% , Со знаком вопроса=!VAR!
)
Команда set VAR=after выполняется внутри подпрограммы, ограниченной скобками и, если убрать команду Setlocal EnableDelayedExpansion или не использовать для получения значения переменной VAR восклицательные знаки, ее значение останется старым ( тем, что было установлено до входа в подпрограмму ). Аналогичная же проблема наблюдается и тогда, когда значение переменной изменяется внутри цикла команды FOR . Например, для получения списка файлов текущего каталога такой командный файл не будет работать:
set LIST=
for %%i in (*) do set LIST=%LIST% %%i
echo %LIST%
Значение переменной LIST внутри цикла изменено не будет. Для того, чтобы это произошло, командный файл нужно изменить следующим образом:
Setlocal EnableDelayedExpansion
set LIST=
for %%i in (*) do set LIST=!LIST! %%i
echo %LIST%
Теперь, значение переменной LIST внутри цикла FOR будет изменяться, последовательно принимая значения имен файлов, разделенных пробелом ( set LIST=!LIST! %%i )
Переменная среды (окружения) в Виндовс хранит информацию о настройках ОС и пользовательских данных. Обозначается она с помощью парного символа «%», например:
С помощью этих переменных можно передавать необходимую информацию операционной системе. Например, %PATH% хранит список директорий, в которых Виндовс ищет исполняемые файлы, если путь к ним не задан явно. %TEMP% хранит временные файлы, а %APPDATA% — настройки программ пользователя.
Зачем редактировать переменные
Изменение переменных среды может помочь, если вы хотите перенести папку «Temp» или «AppData» в другое место. Редактирование %PATH% даст возможность запускать программы из «Командной строки», не указывая каждый раз длинный путь к файлу. Давайте рассмотрим методы, которые помогут в достижении этих целей.
Способ 1: Свойства «Компьютера»
В качестве примера программы, которую необходимо запустить, используем Skype. Попытавшись активировать это приложение из «Командной строки», вы получите такую ошибку:
Это происходит потому, что вы не задали полный путь к исполняемому файлу. В нашем случае полный путь выглядит вот так:
"C:Program Files (x86)SkypePhoneSkype.exe"
Чтобы это не повторять каждый раз, давайте добавим директорию Скайпа в переменную %PATH%.
- В меню «Пуск» нажмите правой кнопкой мыши на «Компьютер» и выберите «Свойства».
Затем перейдите на «Дополнительные параметры системы».
На вкладке «Дополнительно» нажмите на «Переменные среды».
Откроется окно с различными переменными. Выберите «Path» и нажмите «Изменить».
Теперь необходимо дописать путь к нашей директории.
Путь нужно указывать не к самому файлу, а к папке, в которой он находится. Обратите внимание, что разделителем между директориями является «;».
C:Program Files (x86)SkypePhone
Если есть необходимость, таким же образом вносим изменения в другие переменные и жмем «ОК».
Завершаем сеанс пользователя, чтобы изменения сохранились в системе. Снова заходим в «Командную строку» и пытаемся запустить Скайп, введя
Готово! Теперь вы можете запускать любую программу, а не только Skype, находясь в любой директории в «Командной строке».
Способ 2: «Командная строка»
Рассмотрим случай, когда мы хотим установить %APPDATA% на диск «D». Эта переменная отсутствует в «Переменных среды», поэтому ее невозможно изменить первым способом.
-
Чтобы узнать текущее значение переменной, в «Командной строке» введите:
В нашем случае эта папка находится по адресу:
Для того чтобы изменить ее значение, введите:
Внимание! Убедитесь, что точно знаете зачем вы это делаете, поскольку необдуманные действия могут привести к неработоспособности Виндовс.
Значение успешно изменено.
Изменение значений переменных среды требует определенных знаний в этой сфере. Не играйтесь со значениями и не редактируйте их наугад, чтобы не навредить ОС. Хорошо изучите теоретический материал, и только после этого переходите к практике.
Как задать или настроить системную переменную PATH?
Инструкции на данной странице предназначены только для опытных пользователей и системных администраторов.
Общие сведения
- Переменная PATH — это системная переменная, которую операционная система использует для того, чтобы найти нужные исполняемые объекты в командной строке или окне терминала.
- Системную переменную PATH можно задать с помощью системной утилиты в панели управления Windows или с помощью файла запуска командной оболочки Linux и Solaris.
- На компьютерах под управлением Windows или Mac OS X внесение изменений в системную переменную PATH обычно не требуется.
Windows
Windows 10 и Windows 8
- В строке "Поиск" выполните поиск: Система (Панель управления)
- Нажмите на ссылку Дополнительные параметры системы.
- Нажмите Переменные среды. В разделе Переменные среды выберите переменную среды PATH . Нажмите Изменить. Если переменной PATH не существует, нажмите Создать .
- В окне Изменение системной переменной (или Новая системная переменная) укажите значение переменной среды PATH . Нажмите ОК. Закройте остальные открытые окна, нажимая ОК.
- Откройте заново окно командной строки и выполните код java.
Windows 7
- На рабочем столе правой кнопкой нажмите на значок Компьютер.
- В контекстном меню выберите Свойства.
- Нажмите на ссылку Дополнительные параметры системы.
- Нажмите Переменные среды. В разделе Переменные среды выберите переменную среды PATH . Нажмите Изменить. Если переменной PATH не существует, нажмите Создать .
- В окне Изменение системной переменной (или Новая системная переменная) укажите значение переменной среды PATH . Нажмите ОК. Закройте остальные открытые окна, нажимая ОК.
- Откройте заново окно командной строки и выполните код java.
Windows XP
- Нажмите Пуск, выберите Панель управления, дважды нажмите на Система и выберите вкладку Дополнительно.
- Нажмите Переменные среды. В разделе Переменные среды выберите переменную среды PATH . Нажмите Изменить. Если переменной PATH не существует, нажмите Создать .
- В окне Изменение системной переменной (или Новая системная переменная) укажите значение переменной среды PATH . Нажмите ОК. Закройте остальные открытые окна, нажимая ОК.
- Откройте заново окно командной строки и выполните код java.
Mac OS X
Чтобы запустить другую версию Java, укажите полный путь или используйте инструмент java_home :
Solaris и Linux
- Чтобы узнать, правильно ли настроен путь:
В окнах терминала введите:
% java -version
Будет выведена версия средства java , если не удается ее найти. Если версия устарела или появляется ошибка java: команда не найдена, то путь задан неправильно. - Определите, какая исполняемая версия java является первой найденной в переменной PATH
В окне терминала введите:
% which java
Окончательная настройка пути
Чтобы задать путь окончательно, настройте его в файле автозагрузки.
Примечание. Приведены инструкции для двух самых популярных оболочек на Linux и Solaris. Если вы используете другие оболочки, см. Учебное пособие по установке переменной PATH.
Оболочка Bash
Отредактируйте файл автозагрузки (
- Измените переменную PATH variable
PATH=/usr/local/jdk1.8.0/bin:$PATH
export PATH - Сохранить изменения и закрыть окно
- Загрузите файл автозагрузки
% . /.profile - Убедитесь, что путь задан, повторив команду java
% java -version
Оболочка C (csh)
Отредактируйте файл автозагрузки (
- Задайте путь
set path=(/usr/local/jdk1.8.0/bin $path) - Сохранить изменения и закрыть окно
- Загрузите файл автозагрузки
% source
/.cshrc
% java -version