System and User Environment Variables have always been a complex topic of discussion for day-to-day Windows OS users. What do they do? A tutorial on the internet said to add a PATH variable, but what is it? Where do I find these variables? All of these questions will be answered shortly in this post. We’ve tried to give you a high-level overview of what System and User Environment Variables are and how you can utilize them.
In this post, we will discuss Environment Variables, System and User Environment Variables and how to add and modify them. Then, we will move on to Dynamic System Variables and see how to use them in the command prompt.
What is an Environment Variable In Windows OS
Environment Variable is formed up of two separate words, ‘Environment’ and ‘Variable’. Let’s discuss ‘variable’ first. It means that the entity can store a value and vary from computer to computer. Windows provides an ‘Environment’ for applications to execute and perform operations, and that is what makes the first word. Combining both, Environment Variables are those dynamic objects that store the values provided by the environment. Now, the environment provides values that help other programs in obtaining some crucial information about the system. There is an environment variable called ‘windir’ that corresponds to the directory where Windows is installed. To see this in action, open up an explorer window and type in ‘%windir%’ in the address bar. The Windows installation folder will open up.
Very similarly, you can make reference to the Windows directory using ‘windir’ variable in other programs and scripts. There are numerous other variables that can be accessed, ‘TEMP’ or ‘TMP’ is the variable that points to the directory where all temporary files are stored. The most popular ‘Path’ variable is the one that points to the directories containing executable files. So that you can run a program from the Command Prompt in any other directory. We’ve explained Path later on in this post. All these variables come in handy when you are developing something or using the shell a lot.
Very similar to how the Registry works on Windows, we have System and User Environment Variables. The system variables are system-wide accepted and do not vary from user to user. Whereas User Environments are configured differently from user to user. You can add your variables under the user so that other users are not affected by them.
Just for your information, since we are discussing the topic in depth. System Variables are evaluated before User Variables. So if there are some user variables with the same name as system variables, then user variables will be considered. The Path variable is generated in a different way. The effective Path will be the User Path variable appended to the System Path variable. So, the order of entries will be system entries followed by user entries.
Read: How to use Environment Variable Editor in PowerToys?
How to add & modify Environment Variables
A small warning before we go deeper. Create a system restore point, and try not to tamper with the existing settings configured for your system. Until you are very sure about your actions. To open the ‘Environment Variables’ Window, follow these steps:
- Right-click ‘This PC’ icon and select ‘Properties’.
- Now in this window, select ‘Advanced System Settings’ from the left part.
- Hit the last button saying ‘Environment Variables’ to open our destined window.
Once you’ve opened this up, you will be able to view User and System variables separately. The variable name is in the first column and its value in the second. The corresponding buttons below the table let you ‘Add’, ‘Edit’ and ‘Delete’ these variables.
Read: Environment Variables not working in Windows 11
Using the Path variable
Path is the most used environment variable. As I mentioned, it points to directories that contain executable files. Once you’ve correctly set up your Path variable, you can use these executables from anywhere in the system. Let’s try to understand this with an example. Open up the environment variables window and look for ‘Path’ in system variables.
Click on ‘Edit’ and then click on ‘New’ without playing around with other controls right now. Now click browse and select a folder that has your desired executable file. Click ‘Ok’ and save everything. I added ‘Visual Studio Code’ executable to the path.
Now to run your application, open up Command Prompt and type in the name of the executable file that was in the folder. You can provide additional arguments if the program supports it. The program will run from the command prompt without actually being in the directory from where you executed the command. That is the beauty of the Path variable.
Read: How to add or edit a PATH Environment Variable in Windows.
List of all Environment Variables
Open the command prompt and type ‘SET’ and hit Enter. The entire list of variables with their current values will be displayed, and you can refer to it to make changes to your computer.
Read: How to see Names and Values of Environment Variables in Windows
Dynamic Environment Variables
Unlike conventional variables, dynamic environment variables are provided by the CMD and not by the system. You cannot change the values of these variables and they expand to various discrete values whenever queried. We usually use these variables for batch processing and these are not stored in the environment. Even the ‘SET’ command will not reveal these variables. Some of the dynamic environment variables are listed below.
Read: How to add Environment Variables to Context Menu.
List of environment variables in Windows 11/10
%APPDATA% – C:\Users\<username>\AppData\Roaming
%ALLUSERSPROFILE% – C:\ProgramData
%CD% – Typing in this command will give you the current directory you are working in.
%COMMONPROGRAMFILES% – C:\Program Files\Common Files
%COMMONPROGRAMFILES(x86)% – C:\Program Files (x86)\Common Files
%COMMONPRGRAMW6432% – C:\Program Files\Common Files
%CMDEXTVERSION% – This variable expands to the version of the command-line extensions.
%COMSPEC% – C:\Windows\System32\cmd.exe
%DATE%: – This variable will give you the current date according to date format preferences.
%ERRORLEVEL% – Determines the error level set by last executing command.
%HOMEDRIVE% – C:\
%HOMEPATH% -C:\Users\<username>
%LOCALAPPDATA% – C:\Users\<username>\AppData\Local
%LOGONSERVER% – \\<domain_logon_server>
%PATH% – C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem
%PATHEXT% – .com;.exe;.bat;.cmd;.vbs;.vbe;.js;.jse;.wsf;.wsh;.msc
%PROGRAMDATA% – C:\ProgramData
%PROGRAMFILES% – C:\Program Files
%PROGRAMW6432% – C:\Program Files
%PROGRAMFILES(X86)% – C:\Program Files (x86)
%PROMPT% – $P$G
%SYSTEMDRIVE% – C:
%SYSTEMROOT% – C:\Windows
%TIME% – Similarly, it gives you current time according to the time format preferences.
%TMP% – C:\Users\<username>\AppData\Local\Temp
%TEMP% – C:\Users\<username>\AppData\Local\Temp
%USERNAME% – <username>
%USERPROFILE% – C:\Users\<username>
%USERDOMAIN% – Userdomain associated with current user.
%USERDOMAIN_ROAMINGPROFILE% – Userdomain associated with roaming profile.
%WINDIR% – C:\Windows
%PUBLIC% – C:\Users\Public
%PSMODULEPATH% – %SystemRoot%\system32\WindowsPowerShell\v1.0\Modules\
%ONEDRIVE% – C:\Users\<username>\OneDrive
%DRVERDATA% – C:\Windows\System32\Drivers\DriverData
%CMDCMDLINE% – Outputs command line used to launch the current Command Prompt session. (Command Prompt.)
%COMPUTERNAME% -Outputs the system name.
%PROCESSOR_REVISION% – Outputs processor revision.
%PROCESSOR_IDENTIFIER% – Outputs processor identifier.
%PROCESSOR_LEVEL% – Outputs processor level.
%RANDOM% – This variable prints a random number from 0 through 32767
%NUMBER_OF_PROCESSORS% – Outputs the number of physical and virtual cores.
%OS% – Windows_NT
This was pretty much about System and User Environment Variables on Windows. Windows does come with a lot more variables – don’t forget to check them using the ‘SET’ command.
TIP: Rapid Environment Editor is a powerful Environment Variables Editor for Windows.
Переменные окружения Windows
Добавил(а) microsin
Переменные окружения Windows дают программам информацию об операционной системе. Ниже в таблице приведен стандартный список переменных окружения, которые создает Windows. Различные программы также создают свои переменные окружения, которые используют в служебных целях для хранения какой-либо информации.
ALLUSERSPROFILE | В режиме работы под локальным пользователем система возвратит место размещения всех каталогов профилей пользователей (путь папки All Users, например C:\Documents and Settings\All Users). |
APPDATA | В режиме работы под локальным пользователем система возвратит место на диске, где приложения сохраняют свои данные по умолчанию (например C:\Documents and Settings\имяпользователя\Application Data). |
CD | В режиме работы под локальным пользователем система возвратит строку, где будет путь до текущей директории. |
CMDCMDLINE | В режиме работы под локальным пользователем система возвратит полную командную строку, которая используется для запуска текущего интерпретатора команд cmd.exe. |
CMDEXTVERSION | Система вернет номер версии текущих расширений интерпретатора команд (Command Processor Extensions). |
COMPUTERNAME | Система возвратит имя компьютера (оно используется для идентификации компьютера в локальной сети), например WORKSTATION. |
ComSpec | Система вернет полный путь до исполняемого файла интерпретатора команд (например C:\WINDOWS\system32\cmd.exe). |
DATE | Система вернет текущую дату. Эта переменная окружения использует тот же самый формат, который использует команда date /t. Cmd.exe генерирует значение этой переменной. |
ERRORLEVEL | Система вернет код ошибки последней используемой команды. Значение кода, не равное 0 обычно показывает какую-то ошибку. |
HOMEDRIVE | Система покажет букву диска, который связан с домашней директорией пользователей. Эта переменная устанавливается на базе значения домашней директории, где находятся профили пользователей (пользователи и группы управляются оснасткой Local Users and Groups, Локальные пользователи и группы). |
HOMEPATH | Система вернет полный путь до домашнего каталога текущего пользователя (user’s home directory). Эта переменная устанавливается на базе значения домашней директории. |
HOMESHARE | Система вернет сетевой путь до совместно используемой домашней директории пользователя (user’s shared home directory). Эта переменная устанавливается на базе значения домашней директории. |
LOGONSEVER | В режиме работы под локальным пользователем система возвратит имя контроллера домена, который проверил текущее вхождение в систему пользователя. Если компьютер не находится в домене (принадлежит сети с рабочей группой), то эта переменная окружения вернет сетевое имя компьютера (например \\WORKSTATION). |
NUMBER_OF_PROCESSORS | Система возвратит количество процессоров, установленных в компьютере. |
OS | Система возвратит общее имя текущей операционной системы. Windows XP и Windows 2000 показывают значение переменной окружения OS как Windows_NT. |
PATH | Система возвратит пути, где осуществляется поиск исполняемых файлов. Возможно, что это самая важная из всех переменных окружения. В переменной PATH чаще всего находится несколько записей путей. Записи отделяются друг от друга точкой с запятой. |
PATHEXT | Система возвратит список расширений файлов, которые считаются исполняемыми. |
PROCESSOR_ARCHITECTURE | Система возвратит архитектуру используемого системой процессора. Значения: x86, IA64. |
PROCESSOR_IDENTIFIER | Система вернет описание процессора. Например: x86 Family 6 Model 42 Stepping 7, GenuineIntel. |
PROCESSOR_LEVEL | Система вернет номер модели процессора компьютера. |
PROCESSOR_REVISION | Система вернет номер ревизии процессора. |
PROMPT | Система вернет строку приглашения (command-prompt) для текущего интерпретатора команд. Эту переменную генерирует интерпретатор команд cmd.exe. |
RANDOM | Система вернет случайное десятичное число в диапазоне 0 .. 32767. Эту переменную генерирует интерпретатор команд cmd.exe. |
SystemDrive | Система вернет букву диска, на котором находится корневая директория Windows. |
SystemRoot | Система вернет путь до размещения корневого каталога (директории) Windows (Windows root directory). |
TEMP или TMP | Система сама и в режиме работы под локальным пользователем вернет директорию по умолчанию, где приложения и пользователи могут сохранять временные файлы (например C:\DOCUME~1\имяпользователя\LOCALS~1\Temp). Некоторые приложения требуют наличия переменной окружения TEMP, другие наличия переменной окружения TMP. |
TIME | Система возвратит текущее время. Эта переменная использует тот же формат, который использует команда time /t. Эту переменную генерирует интерпретатор команд cmd.exe. |
USERDOMAIN | В режиме работы под локальным пользователем система возвратит домена, который хранит учетную запись пользователя (user’s account). |
USERNAME | В режиме работы под локальным пользователем система возвратит имя пользователя (логин), который в настоящее время вошел в систему. |
USERPROFILE | В режиме работы под локальным пользователем система возвратит место расположения каталога профиля текущего пользователя. |
WINDIR | Система вернет место расположения на диске директории операционной системы. Значение этой переменной окружения совпадает со значением переменной окружения SystemRoot. |
[Как просматривать и редактировать переменные окружения]
Просматривать переменные окружения удобнее всего с помощью команды set. Ниже на примере настройки переменной окружения PATH будет показано редактирование переменной окружения.
В переменной окружения PATH (в командных файлах и в строке интерпретатора cmd для составления путей на неё ссылаются как на %Path%) хранятся пути поиска исполняемых файлов. Это нужно для того, чтобы не надо было вводить длинную строку пути до исполняемого файла. Например, это требуется для интерпретатора java.exe и других утилит JDK. Т. е. если в переменной Path прописан путь до java.exe, то можно не утруждать себя вводом полного пути до java.exe, операционная система Windows будет знать, где искать исполняемый файл.
Все переменные окружения, в том числе и Path, могут быть просмотрены, изменены, удалены и добавлены командой SET. В переменной Path может быть прописано множество путей. Каждая запись пути отделяется от другой точкой с запятой. Вот например, как можно просмотреть содержимое переменной окружения Path:
c:\>SET PATH Path=C:\Program Files\PC Connectivity Solution\;c:\Program Files\Atmel\AVR Tools \AVR Toolchain\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32\WBEM;C:\Xi linx\11.1\ChipScope\bin\nt;C:\Xilinx\11.1\common\bin\nt;C:\Xilinx\11.1\common\li b\nt;C:\Xilinx\11.1\EDK\bin\nt;C:\Xilinx\11.1\EDK\lib\nt;C:\Xilinx\11.1\PlanAhea d\bin;C:\Xilinx\11.1\ISE\bin\nt;C:\Xilinx\11.1\ISE\lib\nt;c:\WinAVR-20100110\bin ;c:\WinAVR-20100110\utils\bin;c:\devkitPro\msys\bin;C:\Program Files\ATI Technol ogies\ATI.ACE\Core-Static;C:\WINDOWS\system32\WindowsPowerShell\v1.0;C:\Program Files\TortoiseHg\;C:\Program Files\TortoiseSVN\bin;C:\Program Files\IVI Foundati on\IVI\bin;C:\Program Files\IVI Foundation\VISA\WinNT\Bin\;C:\PROGRA~1\IVIFOU~1\ VISA\WinNT\Bin;C:\Program Files\Common Files\Adobe\AGL;C:\Program Files\Microsof t SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\ ;C:\Program Files\OpenVPN\bin;c:\Program Files\Android\apache-ant-1.9.3\bin;c:\P rogram Files\Android\android-studio\sdk\tools;c:\Program Files\Android\android-s tudio\sdk\platform-tools;c:\android-ndk-r9c;c:\Program Files\Java\jdk8u5\bin;C:\ Program Files\TortoiseGit\bin;C:\Program Files\IVI Foundation\VISA\WinNT\Bin;C:\ Program Files\ATMEL Corporation\sam-ba_2.11\drv\;C:\Program Files\ATMEL Corporat ion\sam-ba_2.11;C:\Program Files\ATMEL\FLIP 2.4.6\bin;C:\Program Files\Nmap;c:\M inGW\bin;C:\Program Files\Atmel\Flip 3.4.7\bin;c:\Program Files\GPAC;C:\Program Files\Common Files\Ahead\Lib\;C:\Program Files\Common Files\Ahead\Lib\ PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.PSC1
Однако новичкам намного проще использовать для редактирования переменной окружения Path инструмент Пуск -> Панель управления -> Система -> закладка Дополнительно -> кнопка внизу Переменные среды.
Откроется окно, в котором можно просмотреть (и отредактировать) как настройку Path для текущего пользователя (в верхней части окна «Переменные среды пользователя»), так и настройку Path для всей системы (в нижней части окна «Системные переменные»).
Для переменной окружения Path рекомендую вносить изменения в «Системные переменные», это повлияет на рабочее окружение всех пользователей, которые могут работать на этом компьютере.
[Ссылки]
1. Как задать или настроить системную переменную PATH? site:java.com.
There are some programs and commands in Windows which it finds magically without the user giving any hint of where it is placed in the filesystem. For example, if we have to run the PING command, we don’t have to give the location of ping.exe to run it. We just write ping and Windows does the rest of the job. Some executables are known to Windows by default. These paths are configured using Windows system and user variables.
An environment variable is a dynamic value which points to different environments (folders) of the system. For example, if you install Java, you will need to manually set Java environment variable to make sure you can run Java commands without entering path of each command again and again.
There are two types of environment variables:
- System environment variables
- User environment variables
Some examples of environment variable that are used most often are:
- “%windir%”
WINDIR takes you to the directory where Windows is installed. - “TEMP”
TEMP is a command that takes you the folder where temporary files are stored. - “PATH”
PATH environment variable is the most widely used command that contains the executable files and these can be executed from command prompt directly.
The default contents of each variable depends on the version of Windows you are running.
You can access the environment variable settings in Windows by following the steps below:
- Go to Run –> systempropertiesadvanced. This will open System Properties window (Advanced Tab)
- Click Environment Variables button
- There are two sections on the next window, User variables and System variables.
- Select any defined variable in the variables section and click edit.
First we will understand both types of these variables and then how they relate or differentiate. So let’s begin.
System Environment Variables
As the name suggests it deals with the environment of your computer or in more technical terms, the Operating System i.e. an environment the operating system provides the user to execute or perform various operations. So system environment variables provide the variables or values stored in the variables that are required by the system to let other applications perform their tasks. By accessing these variables provided by the system you can get essential information about the system that could be helpful in many ways either to perform a task or to run some kind of program on the system.
System Environment variables are those defined by system and are globally used by all users.
So these were some of the environment variables that store these commands and which are used commonly. You can even create some system variables if you are the admin of the system.
User Environment variables
User variables are only used by the user who declared that variable.
Users can create variables of their choice and insert in it the values that they desire. You can create your own “path” variable or you can even store a string in that variable. You can access the user variables by simply typing the variable in ‘Run'(windows key+R) and it may take you to the path of the user defined variable. But you need to remember that you can not provide the path of any other user’s account as user variables are only accessible by the user who makes them.
Do User Variables Override System Variables?
User variables override the system Variables even if the variables are named the same.
If a user defines a variable that has the same name as a system variable, then when that particular user calls that variable it accesses the local variable made by the user and not the system variable. But this is only in the case of the user who defined it, if any other user access these variables it will call the system variable by default.
However there is a slight difference in ‘PATH’ system variable, the user defined ‘path’ variable does not completely replace it. In fact, it appends with the system ‘PATH’ variable.
Хотите быстро открывать любые нужные Вам папки, запускать Командную строку из любой директории или создавать автоматические сценарии для перемещения файлов? Тогда Вам просто необходимо знать, что такое переменные среды!
Сегодняшняя статья, думаю, будет интересна, в первую очередь, продвинутым пользователям Windows. Хотя, в принципе, знать о предмете разговора не помешает никому. Речь идёт о такой сущности операционной системы как переменные средЫ (ударение на последнем слоге).
Исполняемой средой в Windows является оболочка Командной строки (CMD.EXE). Соответственно переменные эти будут работать в первую очередь в консоли. Однако, поскольку Командная строка поддерживается на уровне системы всеми штатными средствами Windows, переменные окружения будут также отлично работать, например, в Проводнике, в Планировщике заданий или в любых BAT-файлах. Это даёт широкий простор для их применения в сфере автоматизации рутинных процессов при работе с файлами.
Общие данные о переменных окружения
Переменные среды чаще всего разделяют на системные и локальные. Системные могут, в свою очередь, быть встроенными в Windows изначально (имеют наивысший приоритет) или добавлены различными установленными программами. Такие переменные доступны из любой учётной записи и хранятся в разделе реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment.
Локальные переменные среды тоже могут создаваться программно, однако, часто их создают сами пользователи вручную. Такие переменные доступны только в рамках активной в данный момент учётной записи пользователя, а в реестре хранятся в ветках HKEY_CURRENT_USER\Environment и HKEY_CURRENT_USER\Volatile Environment.
Физически переменная окружения являет собой строковый или мультистроковый параметр реестра. Имя его одновременно является именем переменной, а значение, соответственно, её содержимым. В качестве содержимого может выступать любая текстовая информация, команды, пути к папкам или даже ссылки на другие переменные. В последнем случае имя переменной, на которую ссылаются, обрамляется с двух сторон символами «%»:
Кстати, вышеупомянутый способ обрамления имени переменной среды знаками процента используется для вызова её значения в окружении Windows. Например, если в Командной строке Вы хотите вывести текущую дату, Вы можете воспользоваться командой ECHO и переменной DATE в формате: «echo %date%» (без кавычек). Значения переменных можно произвольно комбинировать с любым текстом или значениями других переменных, при условии, что Вы их имена тоже заключите в конструкцию «%…%»:
Думаю, общее представление о том, что такое переменные среды у Вас уже есть, поэтому давайте углубимся в их изучение и рассмотрим более подробно.
Переменные среды Windows
Смотреть существующие переменные среды, как мы уже выяснили, можно в реестре. Однако, это не совсем удобно, поскольку они раскиданы по нескольким веткам. Гораздо проще ознакомиться с полным списком доступных переменных окружения через Командную строку. Для этого вызовите её (WIN+R – cmd – Enter) и введите команду SET без каких-либо дополнительных параметров:
Стоит сказать, что список здесь немного неполный, поскольку не содержит ряда встроенных системных переменных, вроде DATE, TIME, RANDOM и т.п. Начнём, пожалуй, с них.
Системные переменные среды
Переменная | Типичное значение | Назначение |
---|---|---|
APPDATA | C:\Documents and Settings\%UserName%\Application Data или C:\Users\%UserName%\AppData\Roaming (Windows 7 и выше) | Хранит путь к папке с данными установленных программ. |
CMDEXTVERSION | число | Выдаёт версию расширений обработчика команд (Command Processor Extensions). |
COMMONPROGRAMFILES | Обычно: %ProgramFiles%\Common Files | Хранит путь к каталогу Common Files. |
COMMONPROGRAMFILES(x86) | Обычно: %ProgramFiles(x86)%\Common Files | Хранит путь к 32-битной версии каталога Common Files в 64-битных системах. |
COMPUTERNAME | Текст | Хранит имя Вашего компьютера, используемое для идентификации в сетях. |
COMSPEC | C:\Windows\system32\cmd.exe | Содержит путь к файлу запуска Командной строки. При вводе переменной в адресной строке Проводника запускает консоль из текущей папки. |
DATE | Текущая дата | Выдаёт полную текущую дату в формате, заданном в настройках Даты и времени. |
ERRORLEVEL | Число или 0 | Хранит числовой код ошибки произошедшей в последней использованной команде. При отсутствии ошибок выдаёт 0. |
HOMEDRIVE | C:, D:, E: или иные буквы | Выдаёт букву диска, на котором хранится профиль пользователя. |
HOMEPATH | Обычно: \Users\%USERNAME% | Выдаёт путь до каталога с профилем пользователя. |
HOMESHARE | Путь, если есть | Если задана, хранит путь до общей папки в каталоге с профилем пользователя. |
LOCALAPPDATA | Обычно: C:\Users\%UserName%\AppData\Local | Хранит путь до папки с локальными данными установленных программ. |
NUMBER_OF_PROCESSORS | Число | Отображает количество ядер процессора в системе. |
OS | Текст | Отображает название архитектуры Вашей версии Windows (чаще всего Windows_NT для систем старше Windows 2000). |
PATH | Ряд путей | Хранит (через точку с запятой) список путей к различным папкам с исполняемыми файлами системных и прочих приложений. |
PATHEXT | Расширения файлов (.COM; .EXE; .BAT и т.д.) | Хранит (через точку с запятой) список расширений файлов, которые воспринимаются системой как исполняемые. |
PROCESSOR_ARCHITECTURE | Текст | Выдаёт код архитектуры процессора, установленного в системе (например, AMD64). |
PROCESSOR_IDENTIFIER | Текст | Выдаёт код архитектуры процессора, а также ряд дополнительных сведений о нём (модельный ряд, версия модели и т.п.). |
PROCESSOR_LEVEL | Число | Выдаёт код уровня архитектуры процессора (модельный ряд). |
PROCESSOR_REVISION | Число | Выдаёт номер ревизии процессора. |
PROGRAMDATA | Обычно: C:\ProgramData\ | Хранит путь до каталога с данными установленных программ. |
PROGRAMFILES | Обычно: C:\Program Files\ | Хранит путь до каталога установки программ по умолчанию. |
PROGRAMFILES(x86) | Обычно: C:\Program Files (x86)\ | Хранит путь до каталога установки 32-битных программ в 64-битной Windows по умолчанию. |
PUBLIC | Обычно: C:\Users\Public\ | Хранит путь до общего каталога системы (папка «Общие»). |
RANDOM | Число от 0 до 32767 | Выдаёт случайное число от 0 до 32767. |
SAFEBOOT_OPTION | Текст | Существует только в режиме Безопасной загрузки и хранит код текущего режима работы (например, в режиме загрузки «с поддержкой командной строки» – Minimal или «с поддержкой сетевых драйверов» – Network). |
SYSTEMDRIVE | C:, D:, E: или иные буквы | Хранит букву диска, на котором установлена система (обычно совпадает с %HOMEDRIVE%). |
TEMP и TMP | Обычно: C:\Users\%USERNAME%\AppData\Local\Temp\ | Хранит путь к временной папке пользователя. Переменная является одновременно и системной и пользовательской для обеспечения доступа к папкам из-под других учётных записей. |
TIME | Текущее время | Выдаёт текущее время в формате: часы:минуты:секунды.миллисекунды. |
WINDIR | Обычно: C:\Windows\ | Хранит путь до системного каталога Windows. |
Локальные переменные среды
Если системные переменные окружения доступны всегда по всей системе, то локальные работают только в рамках конкретной учётной записи пользователя. Их количество может быть значительным, а состав отличаться даже для разных пользователей одного и того же ПК. Однако, есть ряд переменных, которые обычно присутствуют везде.
Переменная | Типичное значение | Назначение |
---|---|---|
ALLUSERSPROFILE | Обычно: C:\All Users (до Windows XP) или C:\Program Data (Windows 7 и выше) | Хранит путь к папке с данными установленных программ. |
CD | Путь | Хранит путь к текущей активной директории, в которой исполняются команды. |
CLIENTNAME | Текст (если существует) | Если задана, хранит имя компьютера, заданное в настройках текущего пользователя. |
CMDCMDLINE | Текст | Выдаёт полную команду (с параметрами), которая была использована для последнего запуска Командной строки. |
LOGONSERVER | Текст | Хранит имя контроллера домена текущего пользователя. |
PROMPT | Обычно: $P$G | Выдаёт параметры командной строки для текущего интерпретатора. |
SESSIONNAME | Обычно: Console | Выдаёт название типа текущей сессии Командной строки. При запуске с локального ПК имеет значение «Console». При удалённом вызове – «RDP-Tcp#<номер сеанса>». |
USERDOMAIN | Текст | Хранит имя домена (компьютера), в котором работает пользователь. |
USERNAME | Текст | Хранит имя учётной записи активного пользователя. |
USERPROFILE | Обычно: C:\Users\%USERNAME% | Выдаёт путь до каталога с профилем пользователя. |
Создание и правка переменных среды
Как видим, переменных окружения уже изначально существует довольно много. Однако, это не значит, что Вы будете их использовать все и должны помнить наизусть. Более того, на практике Вам может недоставать каких-нибудь значений и Вы, возможно, захотите создать собственные переменные окружения. Благо, что в Windows для этого есть, как минимум, три штатных способа!
Создание переменных среды в Редакторе реестра
Как мы уже говорили, переменные среды хранятся в реестре Windows. Соответственно, там же мы их можем создавать и править. Это не самый правильный способ, но, тем не менее, такая возможность есть.
Чтобы создать, к примеру, локальную переменную окружения откройте Редактор реестра (WIN+R – regedit – Enter) и в ветке HKEY_CURRENT_USER\Environment создайте новый параметр расширяемого строкового, строкового или мультистрокового типа с нужным именем и значением. К примеру, создадим переменную MYNAME со значением «Руслан»:
Чтобы переменная стала доступна в системе нужно либо перезагрузить Windows, либо только сам Проводник. Последнее можно довольно просто сделать при помощи Диспетчера задач (CTRL+SHIFT+ESC). Достаточно только найти процесс «Проводник» (или explorer.exe) и перезапустить его (либо, в более ранних версиях Windows, снять задачу и создать её заново):
После перезапуска оболочки Windows добавленная переменная будет доступна во всех системных компонентах. Проверить же доступность можно, как всегда, в Командной строке через команду ECHO (echo %myname%).
Создание переменных среды в Командной строке
Если Вы уже привыкли к работе в консоли Windows, то создавать переменные среды Вы сможете и прямо в ней. Для создания и правки переменных в Командной строке используется уже знакомая нам команда SET. Только, если для вывода списка переменных мы использовали её без каких-либо параметров, то теперь нам потребуется дополнить команду именем переменной и её значением. Например, создать переменную MYSURNAME со значением «Тертышный» можно так: SET MYSURNAME=Тертышный:
Проверить доступность переменной можно не только уже знакомой командой ECHO но и при помощи всё той же SET с указанием имени переменной: SET MYSURNAME. Если же Вы к предыдущей команде припишите знак «=», то получившаяся функция удалит переменную окружения с указанным именем, например: SET MYSURNAME= (удалит переменную MYSURNAME).
При создании переменной окружения прямо в реестре она там отображалась, но для доступа к ней требовался перезапуск среды. При создании же в консоли перезапуск не нужен. Новая переменная становится доступной сразу после объявления. Правда, она нигде не сохраняется на постоянной основе и использовать её можно только в текущем сеансе Командной строки.
Чтобы сохранить такую переменную в реестр Вам потребуется выполнить манипуляции с командой REG. Например, для сохранения переменной в виде локальной команда будет следующей: REG ADD HKCU\Environment /v MYSURNAME /t REG_EXPAND_SZ /d Тертышный или REG ADD HKCU\Environment /v MYSURNAME /t REG_EXPAND_SZ /d %MYSURNAME%:
Создание переменных среды через Свойства системы
Наиболее безопасным и удобным для простого пользователя, на мой взгляд, является работа с переменными среды через одноимённую оснастку. Чтобы получить к ней доступ вызовите «Свойства системы» (контекстное меню значка «Компьютер» – «Свойства»), перейдите на вкладку «Дополнительно» и нажмите кнопку «Переменные среды» в самом низу:
В открывшемся окне можно управлять некоторыми уже существующими системными и локальными переменными окружения, а также создавать новые. В принципе, здесь ничего сложного нет – всё весьма наглядно. Для создания новой переменной достаточно заполнить всего два поля с её именем и значением. Как и в случае с добавлением переменной через реестр, здесь также требуется перезапуск среды для полноценной работы.
Примеры использования переменных среды
Наконец-то мы разобрались (надеюсь :)) с принципами создания и изменения переменных среды и сейчас рассмотрим несколько практических примеров их применения. Скажу сразу, что применений Вы можете придумать сами большое множество. А, если Вы понимаете синтаксис BAT-файлов, то возможности перед Вами откроются весьма обширные.
Одной из самых полезных системных переменных окружения, на мой взгляд, является %COMSPEC%. Если взглянуть на её значение, то мы увидим, что она запускает Командную строку. Однако, если Вы введёте данную переменную в адресной строке открытой в данный момент папки, то консоль автоматически откроется из этой директории. Такой «фокус» очень удобен, если Вы работаете с консольными приложениями и не хотите каждый раз вводить вручную адрес папки с исполняемыми файлами:
Часто при работе с консолью требуется получить путь или имя рабочей папки. Чтобы не вводить его, опять же, вручную, намного удобнее воспользоваться системной переменной среды %CD%. Данная переменная, как мы знаем, хранит путь активной в данный момент директории.
Переменные, хранящие в своём значении пути, довольно удобно использовать для быстрого перехода к нужным папкам в том же Проводнике. Например, чтобы открыть директорию временных файлов пользователя достаточно ввести в адресную строку %TMP%, а для доступа к папке Windows – %WINDIR% и нажать Enter. Здесь можете создать и свои переменные, например, %DWNLD% для открытия папки загрузок, %DSK% для Рабочего стола и т.п.
Рассмотрим популярную практическую задачу, использующую вышеупомянутый тип переменных – очистка каталога с временными файлами. Как мы знаем, часто различные программы не «убирают» за собой «мусор». В результате этого директория временных файлов медленно но верно увеличивается в объёме. Если Вам хочется автоматизировать её очистку, создайте BAT-файл следующего содержания:
Первая команда удалит каталог временных файлов со всеми подпапками, не спрашивая Вашего подтверждения. Вторая же заново создаст его. Стоит, однако, заметить, что, если Вы запустите такой «батник» во время работы системы, то папка TEMP полностью может и не удалиться, поскольку в ней могут находится ресурсы, используемые активными программами. В принципе, это не смертельно, но консоль выдаст ошибки.
Если же хотите чтобы всё прошло безупречно, лучше запускать очистку при старте Windows, закинув BAT-файл в папку «Автозагрузка» (путь обычно: %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup). Таким образом очистка будет происходить автоматом при каждом запуске системы и не будет стопориться активными процессами, поскольку они ещё не запущены.
В ряде случаев полезной бывает и переменная %RANDOM%. По умолчанию она генерирует случайное число от 0 до 32767. Однако, диапазон можно ограничить приписав после переменной конструкцию » %% число», где «число» – максимальная нужная величина диапазона. Например, получить число от 0 до 10 можно так: «ECHO %RANDOM% %% 11» (в диапазоне всего 11 чисел, включая 0). Немного «заморочившись» можно даже написать простенькую игру «Угадай число» в виде следующего BAT-файла:
@echo off
SET /a GUESS=%RANDOM% %% 101
:begin
SET try=
SET /p «try=Ваше число: «
if «%try%»==»» goto begin
if %try% LSS %GUESS% (echo Загаданное число больше.& goto begin)
if %try% GTR %GUESS% (echo Загаданное число меньше.& goto begin)
if %try%==%GUESS% echo Вы угадали!& pause
Вышеприведённый код реализует игру на угадывание числа от 0 до 100, которое получается как раз из системной переменной окружения %RANDOM%. Для нормального отображения кириллицы набор команд нужно сохранить в виде BAT-файла с кодировкой OEM 866 или DOS (в разных Блокнотах она обозначена по-разному). Быстро запустить его на выполнение можно из любой папки при помощи вышеупомянутого способа с использованием переменной %COMSPEC% и ввода имени BAT-файла:
Выводы
Несмотря не то, что переменные среды в большинстве случаев используют лишь системные администраторы и программисты, они могут здорово пригодиться и простым пользователям! Зная всего несколько из них и умея создавать собственные, Вы без особых проблем сможете, как минимум, получать быстрый доступ к любым нужным папкам.
Если же Ваш интерес будет большим, нежели просто попробовать, что это такое, то Вы можете пойти дальше и писать уже собственные пакетные файлы, автоматизирующие процессы удаления, перемещения и создания файлов с нужными Вам данными. И, пускай Командная строка не так функциональна как, скажем, консоль Linux bash, в умелых руках она может творить буквально чудеса! Не верите? Попробуйте сами!
P.S. Разрешается свободно копировать и цитировать данную статью при условии указания открытой активной ссылки на источник и сохранения авторства Руслана Тертышного.
Переменные для скриптов для доступа в папки пользователя и системы
В таблице перечислены системные и локальные переменные среды для Windows, работает в версиях от XP до 10.
Переменная | Тип | Описание |
---|---|---|
%ALLUSERSPROFILE% | Локальная | Возвращает размещение профиля «All Users». |
%APPDATA% | Локальная | Возвращает используемое по умолчанию размещение данных приложений. |
%CD% | Локальная | Возвращает путь к текущей папке. |
%CMDCMDLINE% | Локальная | Возвращает строку команд, с помощью которой был запущен данный экземпляр Cmd.exe. |
%CMDEXTVERSION% | Системная | Возвращает номер версии текущих расширений обработчика команд. |
%COMPUTERNAME% | Системная | Возвращает имя компьютера. |
%COMSPEC% | Системная | Возвращает путь к исполняемой командной оболочке. |
%DATE% | Системная | Возвращает текущие данные. Использует тот же формат, что и команда date /t. Создается командой Cmd.exe. |
%ERRORLEVEL% | Системная | Возвращает код ошибки последней использовавшейся команды. Значение, не равное нуля, обычно указывает на наличие ошибки. |
%HOMEDRIVE% | Системная | Возвращает имя диска локальной рабочей станции, связанного с основным каталогом пользователя. Задается на основании расположения основного каталога. Основной каталог пользователя указывается в оснастке «Локальные пользователи и группы». |
%HOMEPATH% | Системная | Возвращает полный путь к основному каталогу пользователя. Задается на основании расположения основного каталога. Основной каталог пользователя указывается в оснастке «Локальные пользователи и группы». |
%HOMESHARE% | Системная | Возвращает сетевой путь к общему основному каталогу пользователя. Задается на основании расположения основного каталога. Основной каталог пользователя указывается в оснастке «Локальные пользователи и группы». |
%LOGONSEVER% | Локальная | Возвращает имя контроллера домена, который проверял подлинность текущей сессии. |
%NUMBER_OF_PROCESSORS% | Системная | Задает количество процессоров, установленных на компьютере. |
%OS% | Системная | Возвращает имя операционной системы. При использовании Windows 2000 имя операционной системы отображается как Windows_NT. |
%PATH% | Системная | Указывает путь поиска для исполняемых файлов. |
%PATHEXT% | Системная | Возвращает список расширений файлов, которые рассматриваются операционной системой как исполняемые. |
%PROCESSOR_ARCHITECTURE% | Системная | Возвращает архитектуру процессора. Значения: x86, IA64. |
%PROCESSOR_IDENTFIER% | Системная | Возвращает описание процессора. |
%PROCESSOR_LEVEL% | Системная | Возвращает номер модели процессора, установленного на компьютере. |
%PROCESSOR_REVISION% | Системная | Возвращает номер модификации процессора. |
%ProgramFiles% | Системная | Открывается нативная папка Program Files |
%ProgramFiles(x86)% | Системная | «C:\Program Files (x86)\» для 64-битной системы |
%PROMPT% | Локальная | Возвращает параметры командной строки для текущего интерпретатора. Создается командой Cmd.exe. |
%RANDOM% | Системная | Возвращает произвольное десятичное число от 0 до 32767. Создается командой Cmd.exe. |
%SYSTEMDRIVE% | Системная | Возвращает имя диска, содержащего корневой каталог Windows XP (т. е. системный каталог). |
%SYSTEMROOT% | Системная | Возвращает размещение системного каталога Windows XP. |
%TEMP% и %TMP% | Системная и пользовательская | Возвращает временные папки, по умолчанию используемые приложениями, которые доступны пользователям, выполнившим вход в систему. Некоторые приложения требуют переменную TEMP, другие — переменную TMP. |
%TIME% | Системная | Возвращает текущее время. Использует тот же формат, что и команда time /t. Создается командой Cmd.exe. |
%USERDOMAIN% | Локальная | Возвращает имя домена, содержащего список учетных записей пользователей. |
%USERNAME% | Локальная | Возвращает имя пользователя, выполнившего вход в систему. |
%USERPROFILE% | Локальная | Возвращает размещение профиля для текущего пользователя. |
%WINDIR% | Системная | Возвращает размещение каталога операционной системы. |
Таблицу скопировал отсюда http://www.windowsfaq.ru/content/view/263/57/
Отблагдарить автора статьи также можно переводом, +100 вам в карму!
bat пользователь скрипт