Bat windows переменные среды

Команда SET — работа с переменными среды Windows

&nbsp &nbsp Команда 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:\Users\Usr\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
COMPUTERNAME=TEST7
ComSpec=C:\windows\system32\cmd.exe
FP_NO_HOST_CHECK=NO
HOMEDRIVE=C:
HOMEPATH=\Users\Usr
LOCALAPPDATA=C:\Users\Usr\AppData\Local
LOGONSERVER=\\TEST7
NUMBER_OF_PROCESSORS=2
OS=Windows_NT
Path=C:\windows\system32;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:\windows\system32\Windows PowerShell\v1.0\Modules\
PUBLIC=C:\Users\Public
SystemDrive=C:
SystemRoot=C:\windows
TEMP=C:\Users\Usr\AppData \Local\Temp
TMP=C:\Users\Usr\AppData \Local\Temp
USERDOMAIN=test7
USERNAME=Usr
USERPROFILE=C:\Users\Usr
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 символов от конца:

Читайте также:  Аналоги finder mac os

@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 )

Переменные среды в CMD, BAT-файле

Бывает так, что написанный Вами BAT-файл работает на одном компьютере, но не работает на другом. Ошибка часто заключается в том, что были использованы прямые пути к файлам. Например батник для копирования всех текстовых файлов находящихся в папке windows на диске C

Такой батник будет работать на любом компьютере, только если операционная система установлена на диск С, если ОС расположена на другом диске D,F,K,J и т.д., необходимо использовать переменную %WINDIR%

Такой батник будет работать на любом компьютере — без разницы на какой диск установлена ОС

Переменные среды — текстовые переменные операционной системы, хранящие данные о ряде настроек системы. Используются переменные среды при копировании, перемещении, переименовании, удалении, создании файлов и папок других действий в командной строке.

Список переменных среды ОС Windows Вы можете посмотреть введя в командной строке: set и нажав клавишу Enter Также можно вывести список переменных в текстовый файл с помощью батника

Bat-файл с таким кодом создаст текстовый файл docent.txt(здесь и далее имена подставляйте свои)и выведет список переменных среды ОС Windows в этот текстовый документ в том-же месте где и располагается запущенный батник.

Список переменных сред

%ALLUSERSPROFILE% размещение профиля «All Users»

%APPDATA% используемое по умолчанию размещение данных приложений

%CD% путь к текущей папке

%CMDCMDLINE% строка команд, с помощью которой был запущен данный экземпляр Cmd.exe

%CMDEXTVERSION% номер версии текущих расширений обработчика команд

%COMPUTERNAME% имя компьютера

%COMSPEC% путь к исполняемой командной оболочке

%DATE% текущие данные, использует тот же формат, что и команда date /t

%ERRORLEVEL% код ошибки последней использовавшейся команды

%HOMEDRIVE% имя диска локальной рабочей станции

%HOMEPATH% полный путь к основному каталогу пользователя

%HOMESHARE% сетевой путь к общему основному каталогу пользователя

%LOGONSEVER% имя контроллера домена, который проверял подлинность текущей сессии

%NUMBER_OF_PROCESSORS% количество процессоров, установленных на компьютере

%OS% имя операционной системы

%PATHEXT% список расширений файлов

%PROCESSOR_ARCHITECTURE% архитектура процессора. Значения: x86, IA64

%PROCESSOR_IDENTFIER% описание процессора

%PROCESSOR_LEVEL% номер модели процессора, установленного на компьютере

%PROCESSOR_REVISION% номер модификации процессора

%ProgramFiles% путь к Program Files

%PROMPT% параметры командной строки для текущего интерпретатора

%RANDOM% произвольное десятичное число от 0 до 32767

%SYSTEMDRIVE% имя диска, содержащего корневой каталог

%SYSTEMROOT% размещение системного каталога Windows

%TIME% текущее время

%USERDOMAIN% имя домена, содержащего список учетных записей пользователей

%USERNAME% имя пользователя, выполнившего вход в систему

%USERPROFILE% размещение профиля для текущего пользователя

%WINDIR% размещение каталога операционной системы

Если Вы хотите посмотреть чему равна переменная среды на Вашем компьютере в командной строке(окно CMD), не забывайте прописывать впереди переменной «echo»

echo — команда предназначенная для отображения строки текста

Например если Вы захотите узнать текущее время %TIME% и просто напишите %TIME% в CMD — то получите ошибку: «Синтаксическая ошибка в имени файла, имени папки или метке тома»

Если напишете echo %TIME% — то узнаете точное время

Батником вывести информацию в txt можно так

echo сегодня %DATE% время %TIME% >> docent.txt

echo имя компьютера %COMPUTERNAME% >> docent.txt

Читайте также:  Windows 10 синий экран отчет

echo имя юзера %USERNAME% >> docent.txt

echo где Винда %WINDIR% >> docent.txt

echo и т.д. и т.п >> docent.txt

Использование переменной при удалении файлов и папок с помощью Bat файла

Удаление папки Docent которая находится на диске С в WINDOWS

RD С:\WINDOWS\Docent /S/Q

То-же самое, но удаляем папку с помощью переменной %WINDIR%

RD %WINDIR%\Docent /S/Q

Использование переменной при перемещении файлов

Перемещение текстового файла docent.txt из папки WINDOWS на диске С в папку Program Files которая тоже на диске С

MOVE «C:\WINDOWS\docent.txt» «C:\Program Files»

То-же самое, но перемещаем с помощью переменных %WINDIR% и %ProgramFiles%

MOVE «%WINDIR%\docent.txt» «%ProgramFiles%»
скопировано с: http://docent777.ru/publ/ot_docenta/pro_batniki/peremennye_sredy_v_cmd_bat_fajle/1-1-0-29
источник: www.docent777.ru

Попробуйте наши услуги обслуживания и получите третий месяц обслуживания в подарок!

Set (переменная среды) set (environment variable)

Отображает, устанавливает или удаляет переменные среды cmd.exe. Displays, sets, or removes cmd.exe environment variables. Если используется без параметров, Set отображает текущие параметры переменной среды. If used without parameters, set displays the current environment variable settings.

Для этой команды требуются расширения команд, которые включены по умолчанию. This command requires command extensions, which are enabled by default.

Команда Set также может запускаться из консоли восстановления Windows с использованием различных параметров. The set command can also run from the Windows Recovery Console, using different parameters. Дополнительные сведения см. в разделе Среда восстановления Windows (WinRE). For more information, see Windows Recovery Environment (WinRE).

Синтаксис Syntax

Параметры Parameters

Параметр Parameter Описание: Description
Задает переменную среды, которую необходимо задать или изменить. Specifies the environment variable to set or modify.
Указывает строку, связываемую с указанной переменной среды. Specifies the string to associate with the specified environment variable.
/p /p Присваивает значение строке ввода, введенному пользователем. Sets the value of to a line of input entered by the user.
Указывает сообщение, предлагающее пользователю ввести данные. Specifies a message to prompt the user for input. Этот параметр должен использоваться с параметром /p . This parameter must be used with the /p parameter.
/a /a Задает числовое выражение, которое вычисляется. Sets to a numerical expression that is evaluated.
Задает числовое выражение. Specifies a numerical expression.
/? /? Отображение справки в командной строке. Displays help at the command prompt.

Комментарии Remarks

Если расширения команд включены (по умолчанию) и вы запускаете Set со значением, отображаются все переменные, которые начинаются с этого значения. If command extensions are enabled (the default) and you run set with a value, it displays all of the variables that begin with that value.

Символы ,, > , | & и ^ являются специальными символами командной оболочки и перед ними должны начинаться escape-символом ( ^ ) или заключены в кавычки (например , «стрингконтаининг&Symbol»). The characters , > , | , & , and ^ are special command shell characters, and they must be preceded by the escape character ( ^ ) or enclosed in quotation marks when used in (for example, «StringContaining&Symbol»). Если строка, содержащая специальный символ, заключена в кавычки, кавычки необходимо указывать как часть значения переменной среды. If you use quotation marks to enclose a string that contains one of the special characters, the quotation marks are set as part of the environment variable value.

Используйте переменные среды для управления поведением некоторых пакетных файлов и программ, а также для управления отображением окон и подсистемы MS-DOS. Use environment variables to control the behavior of some batch files and programs and to control the way Windows and the MS-DOS subsystem appears and works. Команда Set часто используется в файле Autoexec. NT для задания переменных среды. The set command is often used in the Autoexec.nt file to set environment variables.

Если вы используете команду Set без параметров, отображаются текущие параметры среды. If you use the set command without any parameters, the current environment settings are displayed. Эти параметры обычно включают переменные среды ComSpec и path , которые используются для поиска программ на диске. These settings usually include the COMSPEC and PATH environment variables, which are used to help find programs on disk. В Windows используются две другие переменные среды: Prompt и DIRCMD. Two other environment variables used by Windows are PROMPT and DIRCMD.

Если заданы значения для и , указанное значение добавляется в среду и связывается с этой переменной. If you specify values for and , the specified value is added to the environment and is associated with that variable. Если переменная уже существует в среде, новое строковое значение заменяет старое. If the variable already exists in the environment, the new string value replaces the old string value.

Если указать только переменную и знак равенства (без ) для команды Set , значение, связанное с переменной, будет очищаться (как если бы переменная отсутствует). If you specify only a variable and an equal sign (without ) for the set command, the value associated with the variable is cleared (as if the variable is not there).

При использовании параметра /a поддерживаются следующие операторы в порядке убывания приоритета. If you use the /a parameter, the following operators are supported, in descending order of precedence:

Оператор Operator Выполненная операция Operation performed
( ) Группирование Grouping
!

Унарный Unary
* / % Арифметические Arithmetic
+ — Арифметические Arithmetic
> Логическая смена Logical shift
& Побитовое И Bitwise AND
^ Побитовое исключающее ИЛИ Bitwise exclusive OR
= *= /= %= += -= &= ^= = >=
, Разделитель выражений Expression separator

Если используются операторы логического ( && или || ) или модуля ( % ), заключите строку выражения в кавычки. If you use logical ( && or || ) or modulus (%) operators, enclose the expression string in quotation marks. Все нечисловые строки в выражении считаются именами переменных среды, и их значения преобразуются в числа до их обработки. Any non-numeric strings in the expression are considered environment variable names, and their values are converted to numbers before they are processed. Если указать имя переменной среды, которое не определено в текущей среде, то выделяется нулевое значение, что позволяет выполнять арифметические операции со значениями переменных среды без использования% для получения значения. If you specify an environment variable name that is not defined in the current environment, a value of zero is allotted, which allows you to perform arithmetic with environment variable values without using the % to retrieve a value.

При запуске set/a из командной строки за пределами командного скрипта отображается конечное значение выражения. If you run set /a from the command line outside of a command script, it displays the final value of the expression.

Числовые значения — это десятичные числа, кроме префикса 0 × для шестнадцатеричных чисел или 0. Numeric values are decimal numbers unless prefixed by 0× for hexadecimal numbers or 0 for octal numbers. Таким образом, 0 × 12 совпадает с 18, что совпадает с 022. Therefore, 0×12 is the same as 18, which is the same as 022.

Отложенная поддержка расширения переменных среды по умолчанию отключена, но ее можно включить или отключить с помощью команды cmd/v. Delayed environment variable expansion support is disabled by default, but you can enable or disable it by using cmd /v.

При создании пакетных файлов можно использовать команду Set для создания переменных, а затем использовать их так же, как и пронумерованные переменные %0%9. When creating batch files, you can use set to create variables, and then use them in the same way that you would use the numbered variables %0 through %9. Можно также использовать переменные %0%9 в качестве входных данных для Set. You can also use the variables %0 through %9 as input for set.

При вызове значения переменной из пакетного файла заключите значение в знаки процента ( % ). If you call a variable value from a batch file, enclose the value with percent signs (%). Например, если программа пакетной службы создает переменную среды с именем бод, можно использовать строку, связанную с параметром бод , в качестве заменяемого параметра, введя % бод% в командной строке. For example, if your batch program creates an environment variable named BAUD, you can use the string associated with BAUD as a replaceable parameter by typing %baud% at the command prompt.

Примеры Examples

Чтобы задать значение Test ^ 1 для переменной среды с именем testVar , введите: To set the value TEST^1 for the environment variable named testVar , type:

Команда Set назначает значение переменной всем, что следует за знаком равенства (=). The set command assigns everything that follows the equal sign (=) to the value of the variable. Поэтому при вводе set testVar=test^1 вы получите следующий результат: testVar=test^1 . Therefore, if you type set testVar=test^1 , you’ll get the following result, testVar=test^1 .

Чтобы задать значение TEST&1 для переменной среды testVar , введите: To set the value TEST&1 for the environment variable testVar , type:

Чтобы задать переменную среды с именем include , с которой связана строка к:\директори , введите: To set an environment variable named INCLUDE so the string c:\directory is associated with it, type:

Затем можно использовать строку к:\директори в пакетных файлах, заключив имя в символы процента ( % ). You can then use the string c:\directory in batch files by enclosing the name INCLUDE with percent signs (%). Например, можно использовать dir %include% в пакетном файле для вывода содержимого каталога, связанного с переменной среды include. For example, you can use dir %include% in a batch file to display the contents of the directory associated with the INCLUDE environment variable. После обработки этой команды строка к:\директори заменяет % include%. After this command is processed, the string c:\directory replaces %include%.

Чтобы использовать команду Set в пакетной программе для добавления нового каталога в переменную среды path , введите: To use the set command in a batch program to add a new directory to the PATH environment variable, type:

Чтобы отобразить список всех переменных среды, начинающихся с буквы P, введите: To display a list of all of the environment variables that begin with the letter P, type:

Читайте также:  Настройки для windows terminal
Оцените статью