Команда set - робота зі змінними середовища windows
Відео: Змінні оточення - частина [1/2]
команда SET використовується для перегляду і зміни змінних середовища оточення в командному рядку Windows. Змінні оточення, це змінні, що приймаються значення яких характеризують програмне середовище, в якій виконується поточна програма - шляхи системних файлів, відомості про апаратні засоби, каталоги користувача і т.п. Значення змінних середовища формуються в процесі завантаження Windows, реєстрації користувача в системі, при виконанні окремих процесів або за допомогою команди SET. Для перегляду значення, прийнятого конкретної змінної можна скористатися командою:SET змінна
SET PATH - відобразити значення змінної PATH
Для створення нової змінної, або зміни значення існуючої, використовується команда:
SET змінна = рядок
змінна - Ім`я змінної середовища.
рядок - Рядок символів, що привласнюється зазначеної змінної.
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 alex 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 alex
LOCALAPPDATA = C: Users alex AppData Local
LOGONSERVER = TEST7
NUMBER_OF_PROCESSORS = 2
OS = Windows_NT
Path = C: windows system32-C: windows-C: windows System32 Wbem-
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 WindowsPowerShell v1.0 Modules
PUBLIC = C: Users Public
SystemDrive = C:
SystemRoot = C: windows
TEMP = C: Users alex AppData Local Temp
TMP = C: Users alex AppData Local Temp
USERDOMAIN = test7
USERNAME = alex
USERPROFILE = C: Users alex
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 вказує, що рядок праворуч від знака рівності є чісловимвираженіем, значення якого обчислюється. Оброблювач виразів оченьпрост і підтримує такі операції, перераховані в порядку убиваніяпріорітета:
() * /% + - lt; lt; gt; gt; ^ | = * = / =% = + = - = = ^ = | = lt; lt; = gt; gt; = , | - угруповання - арифметичні оператори - арифметичні оператори - двійковий зрушення - двоичное І - двоичное виключає АБО - двоичное АБО - привласнення - роздільник операторів |
При використанні будь-яких логічних або довічних операторів необходімозаключіть рядок вираження в лапки. Будь-які нечислові рядки в вираженіірассматріваются як імена змінних середовища, значення яких преобразуютсяв числовий вид перед використанням. Якщо змінна з зазначеним іменемне визначена в системі, замість неї підставляється нульове значення. Етопозволяет виконувати арифметичні операції зі значеннями змінних середовища, причому не потрібно вводити знаки% для отримання значень. Якщо команда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: ~ 0, -6%
ECHO час2 =% tm% Можливе використання число пропусків не задано, і використовується негативне число, то прийняте значення буде частиною змінної від кінця рядка:% PATH: ~ -10% - витягне останні 10 символів змінної PATH
.Нульове значення можна не вказувати, зберігаючи формат підстановки:
% PATH: ~ 0, -2% еквівалентно % PATH: ~, -2%
При використанні змінних оточення в командних файлах існує певне обмеження, пов`язане з тим фактом, що привласнюється значення залишається без зміни при його модифікації всередині групи команд, що задається дужками, наприклад в командах IF або FOR . Для обходу цього обмеження використовується запуск командного процесора з параметром / V: ON і замість знаків відсотка, для отримання прийнятого змінній значення, використовуються знаки оклику. Крім того, існує можливість використовувати стандартний запуск командного процесора, але з локальним включенням даного режиму командою:
Setlocal EnableDelayedExpansion
Різниця в результатах використання значень змінних досить нагляднодемонстріруется наступним командним файлом:
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)
Поділися в соціальних мережах:
Схожі
- Hostname - відобразити ім`я комп`ютера в командному рядку windows.
- Setx - створення або зміна змінних середовища windows
- Title - зміна заголовка вікна командного рядка windows.
- Видалення драйверів в системі windows xp
- Видаляємо невикористовувані драйвера в windows 7
- Команда ftype - перегляд і зміна розширень файлів і зіставлених їм додатків
- Команда exit - завершити роботу командного процесора або поточного командного файлу.
- Команда for - організація циклічної обробки результатів виконання інших команд, списків, і рядків в…
- If - оператор умовного виконання команд в командних файлах windows
- Команда echo - висновок тексту на екран консолі
- Команда where - пошук файлів за шаблоном імені.
- Path - відобразити або змінити шляху пошуку виконуваних файлів.
- Команда endlocal - скасування локальних змін змінних середовища для поточного командного файлу.
- Команда append - приєднати каталог до поточного
- Команда more - посторінковий вивід на екран консолі.
- Команда setlocal - зміна змінних середовища для поточного командного файлу.
- Команда find - пошук рядка символів в файлі
- jаvascript змінні
- Типи змінних в jаvascript
- Змінні оточення в linux
- Глобальні змінні в php