Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OS-Lab-Part-II _Ruda1.docx
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
767.24 Кб
Скачать
  1. Задание 5.1. Команда Set

Команда Set предназначена для отображения и установки переменных среды в ОС Windows XP.

Переменная среды́ — текстовая переменная операционной системы, хранящая какую-либо информацию — например, данные о настройках системы.

Ниже перечислены переменные среды Windows 7 со значениями на моем компьютере.

ALLUSERSPROFILE=C:\ProgramData

APPDATA=C:\Users\Sergey\AppData\Roaming

com.adobe.versioncue.client.applocale=ru_RU

com.adobe.versioncue.client.appname=AdobeDrive

com.adobe.versioncue.client.appversion=1.0.0

CommonProgramFiles=C:\Program Files\Common Files

CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files

CommonProgramW6432=C:\Program Files\Common Files

COMPUTERNAME=SERGEYPC

ComSpec=C:\Windows\system32\cmd.exe

FARADMINMODE=1

FARHOME=H:\Distr\Far 1.705 Rus\Far30b3000.x86.20121208

FARLANG=Russian

FARLOCALPROFILE=C:\Users\Sergey\AppData\Local\Far Manager\Profile

FARPROFILE=C:\Users\Sergey\AppData\Roaming\Far Manager\Profile

FP_NO_HOST_CHECK=NO

HOMEDRIVE=C:

HOMEPATH=\Users\Sergey

LOCALAPPDATA=C:\Users\Sergey\AppData\Local

LOGONSERVER=\\SERGEYPC

NUMBER_OF_PROCESSORS=4

OS=Windows_NT

Path=C:\Program Files (x86)\Far;C:\Program Files (x86)\Borland\Delphi7\Bin;C:\Program Files (x86)\Borland\Delphi7\Projects\Bpl\;C:\Program Files (x86)\Borland\Delphi for .NET Preview\aspx\bin\;C:\Program Files (x86)\Borland\Delphi for .NET Preview\aspx\framework\;C:\Program Files (x86)\Borland\Delphi for .NET Preview\bin\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files\MATLAB\R2010b\runtime\win64;C:\Program Files\MATLAB\R2010b\bin;C:\Program Files (x86)\Haskell\bin;H:\ghc\ghc-6.10.1\bin;C:\Program Files (x86)\Java\jre7\bin\;C:\Program Files\Java\jdk1.7.0_09\bin\;

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

PROCESSOR_ARCHITECTURE=AMD64

PROCESSOR_IDENTIFIER=AMD64 Family 16 Model 4 Stepping 3, AuthenticAMD

PROCESSOR_LEVEL=16

PROCESSOR_REVISION=0403

ProgramData=C:\ProgramData

ProgramFiles=C:\Program Files

ProgramFiles(x86)=C:\Program Files (x86)

ProgramW6432=C:\Program Files

PROMPT=$P$G

PSModulePath=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\

PUBLIC=C:\Users\Public

SESSIONNAME=Console

SystemDrive=C:

SystemRoot=C:\Windows

TEMP=C:\Users\Sergey\AppData\Local\Temp

TMP=C:\Users\Sergey\AppData\Local\Temp

USERDOMAIN=SergeyPC

USERNAME=Sergey

USERPROFILE=C:\Users\Sergey

VBOX_INSTALL_PATH=C:\Program Files\Oracle\VirtualBox\

VBROKERDIR=C:\Inprise\vbroker

VS100COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\

windir=C:\Windows

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

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

Имя

Назначение

Пример значения

%ALLUSERSPROFILE%

Указывает путь до папки общих документов и настроек, общих для всехпользователей.

C:\Documents And Settings\All Users

%APPDATA%

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

C:\Documents And Settings\Администратор\Application Data

%CLIENTNAME%

Переменная определена только в среде удаленного подключения к рабочему столу. Хранит имя компьютера (%COMPUTERNAME%) клиента удаленного доступа.

MyPC

%COMMONPROGRAMFILES%

Указывает путь до папки, в которой хранятся общие для установленных программ файлы.

C:\Program Files\Common Files

%COMPUTERNAME%

Хранит имя компьютера в локальной сети.

Начальник

%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

%SESSIONNAME%

Хранит имя пользовательского сеанса. В локальном сеансе имеет значение Console, в среде удаленного подключения к рабочему столу протоколом TCP/IP имеет вид RDP-Tcp#<номер сеанса>.

Console, RDP-Tcp#1

Синтаксис команды Set: set";

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

где параметр:

переменная — задает имя переменной, значение которой требуется присвоить или изменить.

строка — задает строковое значение для указанной переменной.

Команда SET поддерживает два дополнительных ключа:

SET /A выражение

SET /P variable=[promptString]

Ключ /A указывает, что строка справа от знака равенства является числовым выражением, значение которого вычисляется. Обработчик выражений очень прост и поддерживает следующие операции, перечисленные в порядке убывания приоритета (Табл. 3).

Таблица . Операции обработчика выражений команды Set

п.п.

Операция

Описание

( )

группировка

! ~ -

унарные операторы

* / % +

арифметические операторы

<< >>

двоичный сдвиг

&

двоичное И

^

двоичное исключающее ИЛИ

|

двоичное ИЛИ

= *= /= %= += -= &= ^= |= <<= >>=

присвоение

,

разделитель операторов

При использовании любых логических или двоичных операторов необходимо заключить строку выражения в кавычки. Любые нечисловые строки в выражении рассматриваются как имена переменных среды, значения которых преобразуются в числовой вид перед использованием. Если переменная с указанным именем не определена в системе, вместо нее подставляется нулевое значение. Это позволяет выполнять арифметические операции со значениями переменных среды, причем не нужно вводить знаки % для получения значений. Если команда SET /A вызывается из командной строки, а не из пакетного файла, она выводит окончательное значение выражения. Слева от любого оператора присваивания должно стоять имя переменной среды. Числовые значения рассматриваются как десятичные, если перед ними не стоит префикс 0x для шестнадцатеричных чисел, и 0 для восьмеричных чисел. Например, числа 0x12, и 022 обозначают десятичное число 18. Обратите внимание на запись восьмеричных числе: 08 и 09 не являются допустимыми числами, так как в восьмеричной системе исчисления цифры 8 и 9 не используются. Если команда с ключом /a вызывается из командной строки, а не из пакетного файла, она выводит окончательное значение выражения.

Ключ /P позволяет установ;%ить значение переменной для входной строки, введенной пользователем. Показывает указанное приглашение promptString перед чтением введенной строки. Приглашение promptString может быть пустым.

Подстановка переменной среды может быть расширена следующим образом: %PATH:str1=str2% расширит действие переменной среды PATH, заменяя каждое вхождение "str1" в расширенном результате на "str2". "str2" может быть пустой строкой для эффективного удаления вхождений "str1" из расширенного вывода. "str1" может начинаться со звездочки, и в этом случае это будет соответствовать любому началу расширенного вывода до первого вхождения оставшейся части "str1". Можно также использовать строки расширения.

%PATH:~10,5%

расширит действие переменной среды PATH, затем использует только 5

символов, которые начинаются с 11-го символа (пропустив 10) расширенного

результата. Если длина не указана, по умолчанию используется оставшееся

значение переменной. Если оба значения (длина и число пропускаемых символов) отрицательны, следующим используемым значением будет длина значения переменной среды, добавленной к указанному значению пропуска или указанной длины.

%PATH:~-10%

извлечет последние 10 символов переменной PATH.

%PATH:~0,-2%

извлечет все символы переменной PATH, за исключением 2-х последних.

Наконец, добавлена поддержка связывания времени выполнения для переменных среды окружения. По умолчанию эта поддержка отключена. Ключ /V командной строки CMD.EXE позволяет включать и выключать ее. Связывание времени выполнения для переменных среды окружения полезно при обходе ограничений раннего связывания, которое происходит при первом чтении текстовой строки, а не при ее выполнении. Следующий пример демонстрирует возникающую проблему при использовании раннего связывания переменных:

set VAR=before

if "%VAR%" == "before" (

set VAR=after

if "%VAR%" == "after" @echo Тело внутреннего оператора сравнения

)

Данное сообщение не будет выводиться, т.к. %VAR% в ОБОИХ выражениях if подставляется в момент первого использования в первом if, в том числе и в тело первого ветвления if, которое является составным выражением. В if внутри составного выражения в действительности сравниваются значения "before" и "after", что заведомо ложно. Следующий пример демонстрирует подобную ошибку:

set LIST=

for %i in (*) do set LIST=%LIST% %i

echo %LIST%

в данном случае список файлов текущей папки никогда не будет построен. Вместо этого, значением переменной LIST будет имя последнего найденного файла. И вновь, это случилось потому, что %LIST% подставляется всего один раз - в момент обработки выражения FOR, когда список еще пуст. Фактически, приведенный фрагмент эквивалентен следующему примеру:

for %i in (*) do set LIST= %i

в котором имя последнего найденного файла сохраняется в переменной LIST.

Связывание времени выполнения для переменных среды окружения происходит при использовании специального символа (восклицательного знака), обозначающего проведение сопоставления во время выполнения. Если включена поддержка связывания времени выполнения, то для достижения ожидаемых результатов приведенные выше фрагменты должны быть изменены следующим образом:

set VAR=before

if "%VAR%" == "before" (

set VAR=after

if "!VAR!" == "after" @echo Тело внутреннего оператора сравнения

)

set LIST=

for %i in (*) do set LIST=!LIST! %i

echo %LIST%

При включенной расширенной обработке команд доступны несколько переменных среды, которые не отображаются в списке, отображаемом при вызове команды SET. Значения этих переменных вычисляются динамически каждый раз при их извлечении. Если пользователь явно задает переменные с одним из этих имен, то это определение перекрывает соответствующее динамическое определение, описанное ниже:

%CD% - раскрывается в строку текущей директории.

%DATE% - раскрывается в текущую дату, используя тот же формат команды DATE.

%TIME% - раскрывается в текущую дату, используя формат команды TIME.

%RANDOM% - раскрывается в случайное десятичное число между 0 и 32767.

%ERRORLEVEL% - раскрывается в текущее значение ERRORLEVEL

%CMDEXTVERSION% - раскрывается в текущее значение версии расширенной обработки команд.

%CMDCMDLINE% - раскрывается в исходную командную строку, которая вызвала командный процессор.

Таблица . Динамические значения команды Set

Значение

Описание действия

%Cd% раскрывается в строку текущей директории

%Date% раскрывается в текущую дату

%Time% раскрывается в текущее время

%Random%

раскрывается в случайное десятичное число в диапазоне от 0 до 32767

%Errorlevel%

раскрывается в текущее значение ErrorLevel

%Cmdextversion%

раскрывается в текущее значение версии расширенной обработки команд

%Cmdcmdline%

раскрывается в исходную командную строку, которая вызвала текущее окно командной оболочки

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]