Переменная окружения - Environment variable

Переменная среды является динамическим именем значение , которое может повлиять на то , запущенные процессы будут вести себя на компьютере. Они являются частью среды, в которой выполняется процесс. Например, запущенный процесс может запросить значение переменной среды TEMP, чтобы найти подходящее место для хранения временных файлов , или переменную HOME или USERPROFILE, чтобы найти структуру каталогов, принадлежащую пользователю, запускающему процесс.

Они были представлены в их современной форме в 1979 году с версией 7 Unix , поэтому с этого момента они включены во все разновидности и варианты операционных систем Unix, включая Linux и macOS . Начиная с PC DOS 2.0 в 1982 году, все последующие операционные системы Microsoft , включая Microsoft Windows и OS / 2, также включали их в качестве функции, хотя и с несколько другим синтаксисом, использованием и стандартными именами переменных.

Дизайн

Во всех Unix и Unix-подобных системах, а также в Windows каждый процесс имеет свой собственный отдельный набор переменных среды . По умолчанию при создании процесса он наследует дублирующую среду выполнения своего родительского процесса, за исключением явных изменений, сделанных родителем при создании дочернего процесса. На уровне API эти изменения должны выполняться между запуском forkи exec. В качестве альтернативы, из командных оболочек, таких как bash , пользователь может изменять переменные среды для вызова конкретной команды, косвенно вызывая ее через envили используя ENVIRONMENT_VARIABLE=VALUE <command>нотацию. Запущенная программа может получить доступ к значениям переменных среды для целей конфигурации.

Сценарии оболочки и командные файлы используют переменные среды для передачи данных и предпочтений дочерним процессам . Их также можно использовать для хранения временных значений для последующего использования в сценарии оболочки. Однако в Unix для этого предпочтительны неэкспортируемые переменные , поскольку они не просачиваются за пределы процесса.

В Unix переменная среды, измененная в сценарии или скомпилированной программе, будет влиять только на этот процесс и, возможно, на дочерние процессы. Это не повлияет на родительский процесс и любые несвязанные процессы. Точно так же изменение или удаление значения переменной внутри пакетного файла DOS изменит переменную на время ее COMMAND.COMсуществования.

В Unix, переменные окружения обычно инициализируется при загрузке системы с помощью системы INIT сценариев запуска , и , следовательно , наследуется всеми другими процессами в системе. Пользователи могут, и часто делают, дополнять их в сценарии профиля для командной оболочки, которую они используют. В Microsoft Windows значение по умолчанию каждой переменной среды хранится в реестре Windows или задается в AUTOEXEC.BATфайле.

На Unix , УИП программа дается окружение , выбранное вызывающим, но она работает с различными полномочиями от вызывающего. Динамический компоновщик обычно загружать код из мест , указанных переменной среды $LD_LIBRARY_PATHи $LD_PRELOADи запустить его с властью процесса. Если бы это делала программа setuid, это было бы небезопасно, потому что вызывающая программа могла заставить ее запустить произвольный код и, следовательно, злоупотребить своими полномочиями. По этой причине libc сбрасывает эти переменные среды при запуске процесса setuid. Программы setuid обычно сбрасывают неизвестные переменные среды и проверяют другие или устанавливают для них разумные значения.

В общем, набор переменных среды функционирует как ассоциативный массив, в котором и ключи, и значения являются строками. Интерпретация символов в каждой строке различается в зависимости от системы. Когда необходимо представить структуры данных, такие как списки, обычно используется список с двоеточием (обычно в Unix и Unix-подобных) или через точку с запятой (обычно в Windows и DOS).

Синтаксис

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

Обычно имена переменных среды выбираются в верхнем регистре. Обычно в программном коде это помогает отличать переменные среды от других видов имен в коде. В Unix-подобных операционных системах имена переменных среды чувствительны к регистру, но их нет в DOS, OS / 2 и Windows.

Unix

В большинстве Unix и Unix-подобных оболочек командной строки значение переменной среды извлекается путем помещения $знака перед именем переменной. При необходимости имя можно также заключить в фигурные скобки.

Чтобы отобразить домашний каталог пользователя, пользователь может ввести:

echo $HOME

Если xyzнеобходимо добавить к значению HOMEпеременной, можно ввести:

echo ${HOME}xyz

В Unix и Unix-подобных системах имена переменных среды чувствительны к регистру.

Команда envотображает все переменные среды и их значения. Команду printenvтакже можно использовать для печати одной переменной, задав это имя переменной в качестве единственного аргумента команды.

DOS, OS / 2 и Windows

В интерпретаторах командной строки DOS, OS / 2 и Windows, таких как COMMAND.COMи cmd.exe, переменная среды извлекается путем размещения %знака перед и после нее.

Переменная среды с именем HOMEDRIVEсодержит букву диска (плюс ее конечное :двоеточие) домашнего каталога пользователя, а HOMEPATHтакже полный путь к домашнему каталогу пользователя на этом диске.

Итак, чтобы увидеть домашний диск и путь, пользователь может ввести следующее:

echo %homedrive%%homepath%

В интерпретаторах командной строки DOS, OS / 2 и Windows верхний и нижний регистр не различается для имен переменных среды.

Команда set(без аргументов) отображает все переменные среды и их значения. setтакже можно использовать для печати всех переменных, имена которых начинаются с заданного префикса, задав префикс в качестве единственного аргумента команды.

В Windows PowerShell пользователь может ввести следующее:

echo $env:homedrive$env:homepath

или, используя собственное имя команды PowerShell, эквивалентное echo:

Write-Output $env:homedrive$env:homepath

В PowerShell верхний или нижний регистр не различается для имен переменных среды.

Следующая команда отображает все переменные среды и их значения:

get-childitem env:

Назначение: Unix

Команды envи setмогут использоваться для установки переменных среды и часто встраиваются непосредственно в оболочку.

Следующие команды также могут использоваться, но часто зависят от определенной оболочки.

VARIABLE=value         #
export VARIABLE        # for Bourne and related shells
export VARIABLE=value  # for ksh, bash, and related shells
setenv VARIABLE value  # for csh and related shells

Несколько простых принципов определяют, как переменные среды достигают своего эффекта.

Переменные среды являются локальными для процесса, в котором они были установлены. Если создаются два процесса оболочки и значение переменной среды изменяется в одном, это изменение не будет замечено другим.

Когда создается дочерний процесс, он наследует все переменные среды и их значения от родительского процесса. Обычно, когда программа вызывает другую программу, она сначала создает дочерний процесс путем разветвления , затем дочерний процесс регулирует среду по мере необходимости и, наконец, дочерний процесс заменяет себя программой, которая должна быть вызвана. Эта процедура дает вызывающей программе контроль над средой вызываемой программы.

В оболочках Unix переменные можно назначать без exportключевого слова. Переменные, определенные таким образом, отображаются setкомандой, но не являются истинными переменными среды, поскольку они хранятся только оболочкой и неизвестны всем остальным процессам. Команда printenvне будет их отображать, и дочерние процессы не наследуют их.

VARIABLE=value

Синтаксис префикса экспортирует "истинную" переменную среды в дочерний процесс, не влияя на текущий процесс:

VARIABLE=value program_name [arguments]

Постоянство переменной среды может быть общесессионным или общесистемным.

unsetэто команда , встроенный реализуется как Борна оболочки семейства ( sh, ksh, bashи т.д.) и C оболочки семейства (CSH, Tcsh и т.д.) Unix командной строки оболочек . Он сбрасывает переменную оболочки, удаляя ее из памяти и экспортированной среды оболочки. Он реализован как встроенная оболочка , поскольку напрямую управляет внутренними компонентами оболочки. Переменные оболочки только для чтения нельзя сбросить. Если попытаться отключить переменную, доступную только для чтения, unsetкоманда выведет сообщение об ошибке и вернет ненулевой код выхода.

Назначение: DOS, OS / 2 и Windows

В интерпретаторах командной строки DOS, OS / 2 и Windows, таких как COMMAND.COMи cmd.exe, SETкоманда используется для назначения переменных и значений среды с использованием следующих аргументов:

SET VARIABLE=value

Команда setбез аргументов отображает все переменные среды вместе с их значениями. В cmd.exe, с помощью команды можно назначить локальные переменные, которые не просачиваются наружу SETLOCAL.

В PowerShell назначение следует синтаксису, аналогичному Unix:

$env:VARIABLE = "VALUE"

Примеры

Примеры переменных среды включают:

  • PATH: список путей к каталогам. Когда пользователь вводит команду без указания полного пути, этот список проверяется, чтобы увидеть, содержит ли он путь, ведущий к команде.
  • HOME( Unix-like ) и USERPROFILE(Microsoft Windows): указывают, где в файловой системе находится домашний каталог пользователя .
  • HOME/{.AppName}( Unix-like ) и APPDATA\{DeveloperName\AppName}(Microsoft Windows): для хранения настроек приложения. Многие приложения неправильно используют USERPROFILEнастройки приложений в Windows: USERPROFILEследует использовать только в диалоговых окнах, которые позволяют пользователю выбирать между путями, например Documents/Pictures/Downloads/Music; для программных целей APPDATA(для настроек перемещаемого приложения, совместно используемых на нескольких устройствах), LOCALAPPDATA(для настроек локального приложения) или PROGRAMDATA(для настроек приложения, совместно используемых несколькими пользователями ОС).
  • TERM( Unix-like ): указывает тип используемого компьютерного терминала или эмулятора терминала (например, vt100или dumb).
  • PS1( Unix-like ): указывает, как приглашение отображается в оболочке Bourne и в вариантах.
  • MAIL( Unix-like ): используется, чтобы указать, где находится почта пользователя.
  • TEMP: место, где процессы могут хранить временные файлы.

Истинные переменные среды

Unix

$PATH
Содержит список каталогов, разделенных двоеточиями, в которых оболочка ищет команды, в имени которых нет косой черты (команды с косой чертой интерпретируются как имена файлов для выполнения, и оболочка пытается выполнить файлы напрямую). Это эквивалент переменной DOS , OS / 2 и Windows %PATH% .
$HOME
Содержит расположение домашнего каталога пользователя . Хотя домашний каталог текущего пользователя также можно узнать с помощью C-функций getpwuidи getuid, $HOMEон часто используется для удобства в различных сценариях оболочки (и других контекстах). Использование переменной среды также дает пользователю возможность указать на другой каталог.
$PWD
Эта переменная указывает на текущий каталог. Эквивалентно выводу команды pwd при вызове без аргументов.
$DISPLAY
Содержит идентификатор дисплея, который программы X11 должны использовать по умолчанию.
$LD_LIBRARY_PATH
Во многих системах Unix с динамическим компоновщиком содержит список каталогов, разделенных двоеточиями, в которых динамический компоновщик должен искать общие объекты при построении образа процесса после exec, перед поиском в любых других каталогах.
$LIBPATH или $SHLIB_PATH
Альтернативы $LD_LIBRARY_PATHобычно используемым в более старых версиях Unix.
$LANG, $LC_ALL, $LC_...
$LANGиспользуется для установки языкового стандарта по умолчанию . Например, если значения локали равны pt_BR, то язык установлен на (бразильский) португальский, и там, где это уместно, используется бразильская практика. Различные аспекты локализации контролируются отдельными $LC_-переменными ( $LC_CTYPE, и т. Д.). может использоваться для принудительного использования одного и того же языкового стандарта для всех аспектов.$LC_COLLATE$LC_DATE$LC_ALL
$TZ
Относится к часовому поясу . Он может быть в нескольких форматах, либо с указанием самого часового пояса, либо со ссылкой на файл (в /usr/share/zoneinfo).
$BROWSER
Содержит разделенный двоеточиями список предпочтений веб-браузера пользователя для использования программами, которым необходимо разрешить пользователю просматривать контент по URL-адресу . Предполагается, что браузеры в списке будут выполняться от первого до последнего, останавливаясь после первого успешного. Такая компоновка допускает резервное поведение в различных средах, например, в среде X11 можно использовать графический браузер (такой как Firefox ), но в консольной среде можно использовать браузер терминальной базы (такой как Lynx ). %sМаркер может присутствовать , чтобы указать , где URL - адрес должен быть помещен; в противном случае браузер должен запускаться с URL-адресом в качестве первого аргумента.


ДОС

В DOS основная среда предоставляется основным командным процессором, который наследует предварительную среду, определенную CONFIG.SYSпри первой загрузке. Его размер можно настроить с помощью COMMAND /E:nпараметра от 160 до 32767 байт. Сегменты локальной среды, унаследованные от дочерних процессов, обычно уменьшаются до размера содержимого, которое они содержат. Некоторые процессоры командной строки (например, 4DOS ) позволяют определить минимальный объем свободного пространства среды, которое будет доступно при запуске вторичных оболочек. Хотя содержимое переменных среды остается неизменным при хранении, их имена (без " %") всегда преобразуются в верхний регистр, за исключением переменных, предшествующих среде, определенных с помощью CONFIG.SYSдирективы SETв DR DOS 6.0 и выше (и только с SWITCHES=/L(для " разрешить имена в нижнем регистре ») в DR-DOS 7.02 и выше). В принципе, MS-DOS 7.0 и выше также поддерживает имена переменных в нижнем регистре ( %windir%), но не предоставляет пользователю никаких средств для их определения. Имена переменных среды, содержащие строчные буквы, хранятся в среде так же, как и обычные переменные среды, но остаются невидимыми для большинства программ DOS, поскольку они написаны так, что рассчитаны только на переменные в верхнем регистре. Некоторые командные процессоры ограничивают максимальную длину имени переменной 80 символами. Хотя в основном ограничены только размером сегмента среды , некоторые DOS и 16-разрядные программы Windows не ожидают, что содержимое переменных среды превысит 128 символов. DR-DOS COMMAND.COMподдерживает переменные среды до 255, 4DOS даже до 512 символов. Поскольку в MS-DOS 7.0 и выше COMMAND.COMможно настроить (с помощью /L:128..1024) для поддержки командных строк длиной до 1024 символов внутри, следует ожидать, что переменные среды также будут содержать не менее 1024 символов. В некоторых версиях DR-DOS среда, передаваемая драйверам, которым часто не нужна их среда после установки, может быть уменьшена или перемещена с помощью SETENVили INSTALL[HIGH]/ LOADHIGHoptions /Z(нулевая среда), (заменить диск, например ) и (переместить среду над программой ), чтобы свести к минимуму фактически получаемый драйвером объем резидентной памяти. /D[:loaddrive]B:TSR.COM/E

В пакетном режиме несуществующие переменные среды заменяются строкой нулевой длины.

Стандартные переменные среды или зарезервированные переменные среды включают:

%APPEND% (поддерживается с DOS 3.3)
Эта переменная содержит разделенный точкой с запятой список каталогов, в которых следует искать файлы. Обычно его изменяют с помощью APPEND /Eкоманды, которая также обеспечивает преобразование имен каталогов в верхний регистр. Некоторое программное обеспечение DOS фактически ожидает, что имена будут храниться в верхнем регистре, а длина списка не будет превышать 121 символ, поэтому переменную лучше не изменять с помощью SETкоманды. Длинные имена файлов, содержащие пробелы или другие специальные символы, не должны заключаться в кавычки ( ").
%CONFIG%(поддерживается с MS-DOS 6.0 и PC DOS 6.1 , также поддерживается ROM-DOS )
Эта переменная содержит символическое имя выбранной в данный момент конфигурации загрузки. В BIOS DOS ( IO.SYS, IBMBIO.COMи т. Д.) Ему присваивается имя, определенное соответствующей CONFIG.SYSдирективой, MENUITEMперед запуском основного командного процессора. Его основная цель - разрешить другие особые случаи AUTOEXEC.BATи аналогичные пакетные задания в зависимости от выбранной опции во время загрузки. Это можно эмулировать в DR-DOS с помощью CONFIG.SYSдирективы SETвроде SET CONFIG=1.
%CMDLINE%(введено в 4DOS , также поддерживается с MS-DOS 7.0 )
Эта переменная содержит полностью развернутый текст выполняющейся в данный момент командной строки. Он может быть прочитан приложениями для обнаружения использования и получения длинных командных строк, поскольку традиционный метод получения аргументов командной строки через PSP (или связанные функции API ) ограничен 126 символами и больше не доступен, когда FCB расширяются. или используется DTA по умолчанию . Хотя 4DOS поддерживает более длинные командные строки, по- COMMAND.COMпрежнему поддерживает максимум 126 символов в приглашении по умолчанию (если не переопределено с помощью /U:128..255для указания размера буфера командной строки), но, тем не менее, внутренние командные строки могут стать длиннее из-за расширения переменной fe (в зависимости от /L:128..1024чтобы указать размер внутреннего буфера). В дополнение к байту длины командной строки в PSP, командная строка PSP обычно ограничена ASCII-13 , а командные строки длиной более 126 символов обычно усекаются путем вставки ASCII-13 в позицию 127, но это не может на него можно положиться во всех сценариях. Переменная будет подавлена ​​для внешних команд, вызываемых с помощью предшествующего @символа -символа, например, @XCOPY ...для обратной совместимости и для минимизации размера среды при загрузке неперемещаемых TSR . Некоторые бета-версии Windows Chicago использовали %CMDLINE%для хранения только оставшейся части командной строки, превышающей 126 символов, вместо полной командной строки.
%COMSPEC% (поддерживается с DOS 2.0)
Эта переменная содержит полный путь 8.3 к командному процессору , обычно или . Он не должен содержать длинных имен файлов , но в DR-DOS он может содержать пароли файлов и каталогов. Он настраивается основным командным процессором так, чтобы указывать на себя (обычно это отражает настройки директивы ), так что резидентная часть командного процессора может перезагружать свою переходную часть с диска после выполнения более крупных программ. Значение можно изменить во время выполнения, чтобы отразить изменения в конфигурации, которые потребуют от командного процессора перезагрузки себя из других мест. Переменная также используется при запуске второстепенных снарядов.C:\COMMAND.COMC:\DOS\COMMAND.COMCONFIG.SYSSHELL
%COPYCMD%(поддерживается с MS-DOS 6.2 и PC DOS 6.3 , также поддерживается ROM-DOS )
Позволяет пользователю указать /Yпереключатель (считать «Да» на запросы) по умолчанию для COPY, XCOPYи MOVEкоманд. Значение по умолчанию /Yможно изменить , указав /-Yпереключатель в командной строке. /YПереключатель инструктирует команду , чтобы заменить существующие файлы без запроса подтверждения.
%DIRCMD%(поддерживается начиная с MS-DOS 5.0 и PC DOS 5.0 , также поддерживается ROM-DOS )
Позволяет пользователю указать индивидуальные параметры по умолчанию для DIRкоманды, включая спецификации файлов. Предустановленные переключатели по умолчанию можно изменить, указав отрицательный переключатель в командной строке. Например, если он %DIRCMD%содержит /Wпереключатель, его можно переопределить, используя DIR /-Wв командной строке. Это похоже на переменную окружения %$DIR%в DOS Plus и средство для определения переключателей по умолчанию для DIRсвоих переключателей /Cили /Rв DR-DOS COMMAND.COM . %DIRCMD%также поддерживается командами external SDIR.COM/ DIR.COM Stacker в Novell DOS 7 и выше.
%LANG%(поддерживается с MS-DOS 7.0 )
Эта переменная поддерживается некоторыми инструментами для переключения языкового стандарта для сообщений при многоязычных проблемах.
%LANGSPEC%(поддерживается с MS-DOS 7.0 )
Эта переменная поддерживается некоторыми инструментами для переключения языкового стандарта для сообщений при многоязычных проблемах.
%NO_SEP%(поддерживается с PC DOS 6.3 и DR-DOS 7.07 )
Эта переменная управляет отображением разделителей тысяч в сообщениях различных команд. Выдаваемые по умолчанию, их можно подавить, указав SET NO_SEP=ONили SET NO_SEP=1в PC DOS. DR-DOS дополнительно позволяет переопределить системный разделитель тысяч, отображаемый, как в fe SET NO_SEP=..
%PATH% (поддерживается с DOS 2.0)
Эта переменная содержит список каталогов, разделенных точками с запятой, в которых интерпретатор команд будет искать исполняемые файлы . Эквивалентен $PATHпеременной Unix (но некоторые приложения DOS и Windows также используют этот список для поиска файлов данных, как в $LD_LIBRARY_PATHUnix-подобных системах). Обычно его можно изменить с помощью команды PATH(или PATH /Eв MS-DOS 6.0 ), которая также обеспечивает преобразование имен каталогов в верхний регистр. Некоторое программное обеспечение DOS фактически ожидает, что имена будут храниться в верхнем регистре, а длина списка не будет превышать 123 символа, поэтому переменную лучше не изменять с помощью SETкоманды. Длинные имена файлов, содержащие пробелы или другие специальные символы, не должны заключаться в кавычки ( "). По умолчанию сначала выполняется поиск в текущем каталоге, но некоторые процессоры командной строки, такие как 4DOS, позволяют также .включать " " (для "текущего каталога") в список, чтобы переопределить этот порядок поиска; некоторые программы DOS несовместимы с этим расширением.
%PROMPT% (поддерживается с DOS 2.0)
Эта переменная содержит $строку с символами, определяющую отображение подсказки . Обычно его меняют с помощью PROMPTкоманды.
%TEMP%%TMP%)
Эти переменные содержат путь к каталогу, в котором должны храниться временные файлы . Обычно используются только инструменты операционной системы %TEMP%, тогда как сторонние программы также используют %TMP%. Обычно %TEMP%имеет приоритет %TMP%.

Семейство DR-DOS поддерживает ряд дополнительных стандартных переменных среды, включая:

%BETA%
Эта переменная содержит необязательное сообщение, отображаемое некоторыми версиями (включая DR DOS 3.41 ) COMMAND.COMпри запуске вторичных оболочек.
%DRDOSCFG%/ %NWDOSCFG%/%OPENDOSCFG%
Эта переменная содержит каталог (без символа " \«) , где искать .INIи .CFGконфигурационные файлы (то есть, DR-DOS конкретные приложения файлы , такие как TASKMGR.INI, TASKMAX.INI, VIEWMAX.INI, и FASTBACK.CFGт.д., класс конкретные файлы , такие как COLORS.INI, или глобальные файлы , такие как DRDOS.INI, NWDOS.INI, OPENDOS.INIили DOS.INI), также использованы INSTALLи SETUPкоманд и различных программ DR-DOS , как DISKOPT, DOSBOOK, EDIT, FBX, FILELINK, LOCK, SECURITY.OVL/ NWLOGIN.EXE, SERNO, TASKMAX, TASKMGR, VIEWMAX, или UNDELETE. Он не должен содержать длинных имен файлов .
%DRCOMSPEC%
Эта переменная необязательно содержит альтернативный путь к командному процессору, имеющий приоритет над путем, определенным в %COMSPEC%переменной, необязательно включая пароли файлов и каталогов. В качестве альтернативы он может содержать специальное значение « ON» или « 1», чтобы принудительно использовать %COMSPEC%переменную даже в сценариях, где %COMSPEC%переменная может указывать на неправильный процессор командной строки, например, при запуске некоторых версий DR- SYSКоманда DOS под чужой операционной системой.
%DRSYS%
Установка для этой переменной значения " ON" или " 1" заставит некоторые версии команды DR-DOS SYSработать в чужих операционных системах вместо отображения предупреждения.
%FBP_USER%
Задает имя пользователя , используемое в фастбэк команды FBXи конфигурационные файлы под Novell DOS 7 .{user}.FB
%HOMEDIR%
Эта переменная может содержать домашний каталог DR-DOS (включая DR DOS 5.0 и 6.0 ).
%INFO%
В некоторых версиях DR-DOS COMMAND.COMэта переменная определяет строку, отображаемую $Iтокеном PROMPTкоманды. Его можно использовать, например, для информирования пользователя о выходе из вторичных оболочек.
%LOGINNAME%
В некоторых версиях DR-DOS COMMAND.COMэта переменная определяет имя пользователя, отображаемое $Uтокеном PROMPTкоманды, как установлено, например, сценариями входа в систему для Novell NetWare . См. Также псевдопеременную с аналогичным названием %LOGIN_NAME%.
%MDOS_EXEC%
Эта переменная может принимать значения " ON" или " OFF" в многопользовательской DOS . Если этот параметр включен, операционная система разрешает приложениям выполнять оболочку для вторичных оболочек с освобожденной программной областью DOS (DPA), чтобы иметь максимальную память DOS, доступную для вторичных приложений, вместо того, чтобы запускать их в том же домене, что и под DOS.
%NOCHAR%
Эта переменная может использоваться для определения символа, отображаемого некоторыми командами в сообщениях для «Нет» в [Y,N]запросах, тем самым отменяя текущее значение по умолчанию в системе (обычно « N» в английских версиях DR-DOS). Если он содержит строку, будет взят только первый символ в верхнем регистре. Некоторые команды также поддерживают параметр командной строки, /Yчтобы автоматически принимать «Да» на запросы, тем самым подавляя такие запросы. Если, однако, параметр /Y:ynиспользуется для указания символов «Да» / «Нет» (тем самым отменяя любые %NOCHAR%настройки), запросы не подавляются. См. Также соответствующую CONFIG.SYSдирективу NOCHARи переменную окружения %YESCHAR%.
%NOSOUND%
Установка для этой переменной значения " ON" или " 1" отключит звуковые сигналы по умолчанию, выдаваемые некоторыми командами DR-DOS в определенных ситуациях, например, для информирования пользователя о завершении некоторой операции, о том, что требуется взаимодействие с пользователем или когда была нажата неправильная клавиша. Параметры командной строки для включения определенных звуковых сигналов имеют приоритет над этим параметром.
%OS%
Эта переменная содержит имя операционной системы, чтобы различать различные связанные с DOS операционные системы Digital Research -origin в пакетных заданиях и приложениях. Известные значения включают " DOSPLUS" ( DOS Plus 1.2 в эмуляции DOS), " CPCDOS 4.1" (DOS Plus 1.2 в эмуляции CP / M ), " DRDOS" ( DR DOS 3.31 - 6.0 , DR DOS Panther , DR DOS StarTrek , DR-DOS 7.02 - 7.05 ), " EZDOS" ( EZ-DOS 3.41 ), " PALMDOS" и " NetWare PalmDOS" ( PalmDOS 1.0 ), " NWDOS" ( Novell DOS 7 ), " NWDOS7" (Novell DOS 7 Beta), " OPENDOS" ( Caldera OpenDOS 7.01 , Caldera DR-OpenDOS 7.02 ), " CDOS" ( Concurrent DOS , Concurrent DOS XM ), " CPCDOS" ( Concurrent PC DOS ), " CDOS386" ( Concurrent DOS 386 ), " DRMDOS" ( DR Multiuser DOS ), " MDOS" ( CCI Multiuser DOS ), " IMSMDOS" ( IMS Multiuser DOS ), " REAL32" ( REAL / 32 ). MS-DOS также INTERSVRищет значение " DRDOS". См. Также переменную среды с таким же именем, %OS%представленную позже в семействе Windows NT .
%PEXEC%
В некоторых версиях DR-DOS эта переменная определяет команду, выполняемую $Xтокеном PROMPTкоманды до COMMAND.COMотображения подсказки после возврата из выполнения внешней программы.
%SWITCHAR%
Эта переменная определяет SwitChar, который будет использоваться для синтаксического анализа аргументов некоторыми командами DR-DOS. Если он определен, он переопределяет текущую настройку SwitChar системы. Допускаются только символы « /» (стиль DOS), « -» (стиль Unix) и « [» (стиль CP / M). См. Также соответствующую CONFIG.SYSдирективу SWITCHAR(для установки системного параметра SwitChar) и %/% переменную системной информации в некоторых выпусках DR-DOS COMMAND.COM(для получения текущего параметра для переносимых пакетных заданий).
%TASKMGRWINDIR%
Эта переменная определяет каталог, в котором находится Windows, SYSTEM.INI которая будет использоваться TASKMGRмногозадачным DR-DOS , отменяя процедуру по умолчанию для поиска файла.
%VER%
Эта переменная содержит версию операционной системы, чтобы различать разные версии DR-DOS в пакетных заданиях и при отображении VERкоманды. Он также используется для $Vтокена PROMPTкоманды и влияет на значение, возвращаемое переменной системной информации %OS_VERSION% . Известные значения включают " 1.0" ( PalmDOS 1.0 ), " 1.2" ( DOS Plus 1.2 в эмуляции DOS), " 2.0" ( Concurrent DOS 386 2.0 ), " 3.0" ( Concurrent DOS 386 3.0 ), " 3.31" ( DR DOS 3.31 ), " 3.32" ( DR DOS 3.32 ), " 3.33" ( DR DOS 3.33 ), " 3.34" ( DR DOS 3.34 ), " 3.35" ( DR DOS 3.35 ), " 3.40" ( DR DOS 3.40 ), " 3.41" ( DR DOS 3.41 , EZ-DOS 3.41 ), " 3.41T" ( DR DOS 3.41T ), " 4.1" ( Concurrent PC DOS 4.1 ), " 5.0" ( DR DOS 5.0 , DR Multiuser DOS 5.0 ), " 5.1" ( Novell DR Multiuser DOS 5.1 ), " 6.0" ( DR Concurrent DOS XM 6.0 , DR DOS 6.0 ), " 6.2" ( DR Параллельная DOS XM 6.2 ), " 7" ( Novell DOS 7 , Caldera OpenDOS 7,01 , DR-DOS 7,02 - 7,05 ), " 7.00" ( CCI Многопользовательские DOS 7,00 ), " 7.07" ( DR-DOS 7,07 ), " 7.1" ( IMS Multiuser DOS 7.1 ), " 7.21" ( CCI Multiuser DOS 7.21 ), " 7.22" ( CCI Multiuser DOS 7.22 ) и т. Д.
%YESCHAR%
Эту переменную можно использовать для определения символа, отображаемого некоторыми командами в сообщениях для «Да» в [Y,N]запросах, тем самым отменяя текущие системные значения по умолчанию (обычно « Y» в английских версиях DR-DOS). Если он содержит строку, будет взят только первый символ в верхнем регистре. Некоторые команды также поддерживают параметр командной строки, /Yчтобы автоматически принимать «Да» на запросы, тем самым подавляя такие запросы. Если, однако, параметр /Y:yиспользуется для указания символа «Да» (тем самым отменяя любую %YESCHAR%настройку), запросы не подавляются. См. Также соответствующую CONFIG.SYSдирективу YESCHARи переменную окружения %NOCHAR%.
%$CLS%
Эта переменная определяет последовательность управления, которая будет отправлена ​​драйверу консоли для очистки экрана при выдаче CLSкоманды, тем самым отменяя внутреннее значение по умолчанию (" ←[2J" под DR-DOS, " ←E" под DOS Plus 1.2 на машинах Amstrad, а также под Concurrent DOS , многопользовательский DOS и REAL / 32 для терминалов VT52 или " ←+" в многопользовательском DOS для терминалов ASCII ). Если переменная не определена и ANSI.SYSдрайвер консоли не обнаружен, DR-DOS COMMAND.COMочистит экран напрямую через функцию INT 10h/AH=00h BIOS , как это COMMAND.COMделает MS-DOS / PC DOS . \nnnПоддерживается специальная нотация для восьмеричных чисел , позволяющая определять специальные символы, такие как ESC ( ASCII-27 = "←" = 1Bh = 33o), например, в SET $CLS=\033[2J. Чтобы отправить \саму обратную косую черту (" "), ее можно удвоить " \\".
%$DIR%
Поддерживается DOS Plus, принимая значения «L» (длинный) или «W» (широкий), чтобы изменить расположение списков каталогов по умолчанию с помощью DIR . Может быть переопределено с помощью параметров командной строки /Lили /W. Смотрите также аналогичные переменные окружения %DIRCMD%и DIRварианты /Cи /Rв DR-DOS COMMAND.COM.
%$PAGE%
Поддерживается DOS Plus, принимающим значения " ON" или " OFF" для управления разбиением на страницы. Установка этого параметра на " ON" имеет тот же эффект, что и добавление /Pк поддерживающим его командам (например, DIR или TYPE ).
%$LENGTH%
Используется DOS Plus для определения длины экрана консоли в строках. Это используется для портативного управления, когда вывод на экран должен быть временно остановлен до тех пор, пока не будет нажата клавиша в сочетании с /Pопцией, поддерживаемой различными командами, или с автоматической разбивкой на страницы. См. Также соответствующие переменные среды %$WIDTH%и %DIRSIZE%аналогичную псевдопеременную %_ROWS%.
%$WIDTH%
Используется DOS Plus для определения ширины экрана консоли в столбцах. Это используется для портативного управления форматированием вывода на экран таких команд, как DIR /Wили TYPE filename. См. Также соответствующие переменные среды %$LENGTH%и %DIRSIZE%аналогичную псевдопеременную %_COLUMNS%.
%$SLICE%
Используется DOS Plus, принимая числовое значение для управления временным интервалом переднего плана / фона многозадачных программ. См. Также команду DOS Plus SLICE.
%$ON%
Эта переменная может содержать необязательную управляющую последовательность для включения выделения, реверсирования или раскрашивания текста. Он используется для выделения или иного управления отображением имен файлов в командах TYPE wildcard, например, SET $ON=\033[1mпри загруженном ANSI.SYS или SET $ON=\016для принтера IBM или ESC / P. Информацию о \nnnподдерживаемых специальных восьмеричных обозначениях см %$CLS%. В разделе . В то время как переменная по умолчанию не определена в DOS Plus и DR-DOS, многопользовательская DOS по умолчанию для терминала ASCII равна SET $ON=\033p. См. Также связанную переменную среды %$OFF%.
%$OFF%
Эта переменная может содержать необязательную управляющую последовательность для отключения выделения, реверсии или раскрашивания текста. Он используется для возврата к нормальному выводу после отображения имен файлов в командах TYPE wildcard, например, SET $OFF=\033[0mпри загруженном ANSI.SYS или SET $OFF=\024для принтера IBM или ESC / P. Информацию о \nnnподдерживаемых специальных восьмеричных обозначениях см %$CLS%. В разделе . В то время как переменная по умолчанию не определена в DOS Plus и DR-DOS, многопользовательская DOS по умолчанию для терминала ASCII равна SET $OFF=\033q. См. Также соответствующую переменную среды %$ON%.
%$HEADER%
Эта переменная может содержать необязательную управляющую последовательность, выдаваемую перед выводом содержимого файла в командах, как TYPEв DR-DOS 7.02 и выше. Он может быть использован для выделения, пагинации или форматирования, Ого при отправке вывода на принтер, то есть SET $HEADER=\017для IBM или ESC / P принтер. Информацию о \nnnподдерживаемых специальных восьмеричных обозначениях см %$CLS%. В разделе . См. Также соответствующую переменную среды %$FOOTER%.
%$FOOTER%
Эта переменная может содержать необязательную управляющую последовательность, выдаваемую после вывода содержимого файла в командах, как TYPEв DR-DOS 7.02 и выше. Он используется для возврата к нормальному формату вывода, то есть SET $FOOTER=\022\014в примере с принтером выше. Информацию о \nnnподдерживаемых специальных восьмеричных обозначениях см %$CLS%. В разделе . См. Также соответствующую переменную среды %$HEADER%.

Datalight ROM-DOS также поддерживает ряд дополнительных стандартных переменных среды, включая:

%DIRSIZE%
Эта переменная используется для определения нестандартных размеров экрана rows[,cols]для DIRопций /Pи /W(аналогично %$LENGTH%и %$WIDTH%под DOS Plus).
%NEWFILE%
Эта переменная автоматически устанавливается на первый параметр, указанный в директиве NEWFILE CONFIG.SYS .

%TZ%, %COMM%, %SOCKETS%, %HTTP_DIR%, %HOSTNAME%И %FTPDIR%также используются ROM-DOS.

OS / 2

%BEGINLIBPATH%
Содержит список каталогов, разделенных точкой с запятой, в которых выполняется поиск библиотек DLL перед каталогами, заданными %LIBPATH%переменной (которая устанавливается при запуске системы с помощью специальной директивы CONFIG.SYSLIBPATH ). Здесь можно указать относительные каталоги, включая " ." для текущего рабочего каталога. См. Также связанную переменную среды %ENDLIBPATH%.
%ENDLIBPATH%
список каталогов , в которых производится поиск библиотек DLL , как %BEGINLIBPATH%, но искал после списка каталогов %LIBPATH%.

Окна

Переменные системного пути относятся к расположению критических ресурсов операционной системы и, как таковые, обычно не зависят от пользователя.

%APPDATA%
Содержит полный путь к каталогу Application Data вошедшего в систему пользователя. Не работает в Windows NT 4.0 SP6 UK.
%LOCALAPPDATA%
Эта переменная - временные файлы Applications . Его использование включает хранение тем рабочего стола , отчеты об ошибках Windows , кеширование и профили веб-браузеров.
%ComSpec%/%COMSPEC%
%ComSpec%Переменная содержит полный путь к командному процессору; на семействе Windows NT операционных систем, это cmd.exe , в то время как на Windows 9x , %COMSPEC%является COMMAND.COM .
%OS%
%OS%Переменная содержит символическое имя семейства операционной системы , чтобы различать между различными наборами функций в batchjobs . Он напоминает переменную среды с одинаковым именем, которая %OS%присутствует во всех связанных с DOS операционных системах Digital Research, таких как Concurrent DOS, Multiuser DOS , REAL / 32, DOS Plus , DR DOS , Novell DOS и OpenDOS. %OS%всегда содержит строку " Windows_NT" в семействе Windows NT .
%PATH%
Эта переменная содержит разделенный точками с запятой (не ставьте пробелы между ними) список каталогов, в которых интерпретатор команд будет искать исполняемый файл, соответствующий заданной команде. Переменные среды, представляющие пути, могут быть вложены в %PATH%переменную, но только на одном уровне косвенности. Если эта переменная среды субпутья сама содержит переменную среды, представляющую путь, %PATH%не будет должным образом расширяться при подстановке переменных. Эквивалент переменной Unix $PATH .
%ProgramFiles%, %ProgramFiles(x86)%,%ProgramW6432%
В %ProgramFiles%точки переменной в Program Files каталог, в котором хранятся все установленные программы в Windows , и другие. По умолчанию в англоязычных системах установлено " C:\Program Files". В 64-битных выпусках Windows (XP, 2003, Vista) также есть %ProgramFiles(x86)%, для которых по умолчанию используется значение « C:\Program Files (x86)», и для %ProgramW6432%которого используется значение по умолчанию « C:\Program Files». Само по %ProgramFiles%себе зависит от того, является ли процесс, запрашивающий переменную среды, 32-битным или 64-битным (это вызвано перенаправлением 64-битной Windows-on-Windows ).
%CommonProgramFiles%
Эта переменная указывает на каталог Common Files . По умолчанию C:\Program Files\Common Filesв английской версии Windows установлено значение «».
%SystemDrive%
%SystemDrive%Переменный специальная общесистемная переменная среды находится на Windows NT и ее производные. Его значение - это диск, на котором был размещен системный каталог. В %SystemDrive%большинстве случаев значение равно " C:".
%SystemRoot%
%SystemRoot%Переменная специальная общесистемного переменная среды находится на семейства Windows NT операционных систем. Его значение - это расположение системного каталога, включая диск и путь. Диск такой же, как %SystemDrive%и путь по умолчанию при чистой установке, зависит от версии операционной системы. По умолчанию:
%windir%
Эта переменная указывает на каталог Windows . (В операционных системах семейства Windows NT он идентичен %SystemRoot%переменной). Windows 95 - 98 и Windows ME по умолчанию устанавливаются в " C:\Windows". Для других версий Windows см. %SystemRoot%Запись выше.

Переменные управления пользователями хранят информацию, относящуюся к ресурсам и настройкам, принадлежащим различным профилям пользователей в системе. Как правило, эти переменные не относятся к критическим системным ресурсам или расположениям, которые необходимы для работы ОС.

%ALLUSERSPROFILE%( %PROGRAMDATA%начиная с Windows Vista)
Эта переменная расширяется до полного пути к каталогу профиля « Все пользователи» . Этот профиль содержит ресурсы и настройки, которые используются всеми системными учетными записями. Сочетания ссылка скопированная на All Usersменю Пуска или настольных каталоги появится в каждом пользователе в меню Пуска или рабочем столе , соответственно.
%USERDOMAIN%
Имя рабочей группы или домена Windows, к которому принадлежит текущий пользователь. Связанная переменная %LOGONSERVER%,, содержит имя хоста сервера, который аутентифицировал учетные данные текущего пользователя (имя и пароль). Для домашних ПК и ПК в рабочей группе сервером аутентификации обычно является сам ПК. Для ПК в домене Windows сервер аутентификации является контроллером домена (основным контроллером домена или PDC в доменах под управлением Windows NT 4).
%USERPROFILE%
Специальная общесистемная переменная среды, встречающаяся в Windows NT и ее производных. Его значением является расположение каталога профиля текущего пользователя, в котором находится куст реестра HKCU этого пользователя ( NTUSER). Пользователи также могут использовать %USERNAME%переменную для определения идентификатора входа активного пользователя.

Необязательные системные переменные явно не указываются по умолчанию, но могут использоваться для изменения поведения по умолчанию некоторых встроенных консольных команд. Эти переменные также не нужно явно указывать в качестве аргументов командной строки.

Значения по умолчанию

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

(Некоторые из этих переменных также определяются при работе COMMAND.COMпод Windows, но отличаются некоторыми важными деталями: в разделе COMMAND.COMимена переменных среды всегда пишутся в верхнем регистре. Некоторые, но не все переменные содержат короткие имена файлов 8.3, а не длинные . Хотя некоторые переменные присутствуют в CMDсреде отсутствуют, есть также некоторые переменные, специфичные для COMMANDсреды.)

Переменная Зависит от локали Windows XP (CMD) Windows Vista и более поздние версии (CMD)
% ALLUSERSPROFILE% да C: \ Documents and Settings \ All Users C: \ ProgramData
%ДАННЫЕ ПРИЛОЖЕНИЯ% да C: \ Documents and Settings \ {имя пользователя} \ Application Data C: \ Users \ {имя пользователя} \ AppData \ Roaming
% CommonProgramFiles% да C: \ Program Files \ Общие файлы C: \ Program Files \ Общие файлы
% CommonProgramFiles (x86)% да C: \ Program Files (x86) \ Common Files (только в 64-битной версии) C: \ Program Files (x86) \ Common Files (только в 64-битной версии)
% CommonProgramW6432% да % CommonProgramW6432% (не поддерживается, не заменяется никаким значением) C: \ Program Files \ Common Files (только в 64-битной версии)
%ИМЯ КОМПЬЮТЕРА% Нет {Имя компьютера} {Имя компьютера}
% ComSpec% Нет C: \ Windows \ System32 \ cmd.exe C: \ Windows \ System32 \ cmd.exe
% HOMEDRIVE% Нет C: C:
% HOMEPATH% да \ Documents and Settings \ {имя пользователя} \ Users \ {имя пользователя}
% LOCALAPPDATA% да % LOCALAPPDATA% (не поддерживается, не заменяется никаким значением) C: \ Users \ {имя пользователя} \ AppData \ Local
% LOGONSERVER% Нет \\ {domain_logon_server} \\ {domain_logon_server}
%ДОРОЖКА% да C: \ Windows \ system32; C: \ Windows; C: \ Windows \ System32 \ Wbem; {плюс пути к программам} C: \ Windows \ system32; C: \ Windows; C: \ Windows \ System32 \ Wbem; {плюс пути к программам}
% PATHEXT% Нет .COM; .EXE; .BAT; .CMD; .VBS; .VBE; .JS; .WSF; .WSH .com; .exe; .bat; .cmd; .vbs; .vbe; .js; .jse; .wsf; .wsh; .msc
%Данные программы% да % ProgramData% (не поддерживается, не заменяется никаким значением) % SystemDrive% \ ProgramData
%Программные файлы% да % SystemDrive% \ Program Files % SystemDrive% \ Program Files
% ProgramFiles (x86)% да % SystemDrive% \ Program Files (x86) (только в 64-битной версии) % SystemDrive% \ Program Files (x86) (только в 64-битной версии)
% ProgramW6432% да % ProgramW6432% (не поддерживается, не заменяется никаким значением) % SystemDrive% \ Program Files (только в 64-битной версии)
%ПОДСКАЗКА% Нет Код для текущего формата командной строки, обычно $ P $ G Код для текущего формата командной строки, обычно $ P $ G
% PSModulePath% % PSModulePath% (не поддерживается, не заменяется никаким значением) % SystemRoot% \ system32 \ WindowsPowerShell \ v1.0 \ Modules \
% PUBLIC% да % PUBLIC% (не поддерживается, не заменяется никаким значением) % SystemDrive% \ Users \ Public
% SystemDrive% Нет C: C:
% SystemRoot% Нет Каталог Windows, обычно C: \ Windows, ранее C: \ WINNT % SystemDrive% \ Windows
% TEMP% и % TMP% да % SystemDrive% \ Documents and Settings \ {имя пользователя} \ Local Settings \ Temp % SystemRoot% \ TEMP (для переменных системной среды % TMP% и % TEMP% ), % USERPROFILE% \ AppData \ Local \ Temp (для переменных среды пользователя % TMP% и % TEMP% )
% USERDOMAIN% Нет {userdomain} {userdomain}
%ИМЯ ПОЛЬЗОВАТЕЛЯ% Нет {имя пользователя} {имя пользователя}
%ПРОФИЛЬ ПОЛЬЗОВАТЕЛЯ% да % SystemDrive% \ Documents and Settings \ {имя пользователя} % SystemDrive% \ Users \ {имя пользователя}
% windir% Нет % SystemDrive% \ WINDOWS % SystemDrive% \ Windows

В этом списке нет переменной среды, которая ссылается на расположение каталога « Мои документы» пользователя , поэтому нет стандартного метода для установки домашнего каталога программы в качестве каталога « Мои документы» .

Переменные псевдо-окружения

Командные процессоры в DOS и Windows также поддерживают переменные псевдо-среды. Это значения, которые выбираются как переменные среды, но не хранятся в среде на самом деле, а вычисляются по запросу.

ДОС

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

Так называемые параметры замены или заменяемые параметры (терминология Microsoft / IBM), также известные как переменные замены ( терминология Digital Research / Novell / Caldera) или параметры пакетного файла (терминология JP Software) %1.. %9и %0могут использоваться для получения параметров вызова пакетного задания , см SHIFT. В пакетных заданиях они могут быть получены так же, как переменные среды, но на самом деле они не сохраняются в среде.

Некоторые процессоры командной строки (например, DR-DOS COMMAND.COM , Multiuser DOS MDOS.COM / TMP.EXE(Terminal Message Process), JP Software 4DOS , 4OS2 , 4NT , Take Command и Windows cmd.exe ) поддерживают тип переменных псевдосреды, называемых переменными системной информации (Novell / Caldera) или внутренних переменных (терминология JP Software), которые могут использоваться для получения различной, возможно, динамической, но доступной только для чтения информации о работающей системе в пакетных заданиях. Возвращенные значения представляют состояние системы на момент запроса этих переменных; то есть чтение их несколько раз подряд может вернуть разные значения даже в пределах одной и той же команды; их запросы не имеют прямого воздействия на систему. Поскольку они не хранятся в среде, они не перечислены в SET и не существуют для извлечения внешними программами. Если определена истинная переменная среды с тем же именем, она имеет приоритет перед соответствующей переменной до тех пор, пока переменная среды не будет снова удалена. Они не чувствительны к регистру. Хотя почти все такие переменные имеют префикс подчеркивания (" _") в 4DOS и т. Д. По соглашению (fe %_SECOND%), они не входят в DR-DOS COMMAND.COM(fe %OS_VERSION%).

Кроме того, 4DOS, 4OS2, 4NT и Take Command также поддерживают так называемые функции переменных , в том числе определяемые пользователем. Они работают так же, как внутренние переменные , но могут принимать необязательные параметры (например %@EVAL[]%) и даже изменять состояние системы в зависимости от своей функции.

Переменные системной информации, поддерживаемые DR-DOS COMMAND.COM:

%AM_PM%
Эта псевдопеременная возвращает статус текущего времени до или после полудня. Возвращаемая строка зависит от языковой версии DR-DOS, например " am" или " pm" в английской версии. Он похож на переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare .
%DAY%
Эта псевдопеременная возвращает дни текущей даты в 2-значном формате с ведущими нулями, например, " 01" .. " 31". См. Также аналогичную псевдопеременную %_DAY%. Он напоминает переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare .
%DAY_OF_WEEK%
Эта псевдопеременная возвращает название дня недели в трехсимвольном формате. Возвращаемая строка зависит от языковой версии DR-DOS, например, " Sun", " Mon", " Tue", " Wed", " Thu", " Fri" или " Sat" в английской версии. Он похож на переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare .
%ERRORLEVEL%
В COMMAND.COMDR-DOS 7.02 и выше эта псевдопеременная возвращает последний уровень ошибки, возвращенный внешней программой или RETURNкомандой, например " 0" .. " 255". См. Также псевдопеременную с таким же именем %ERRORLEVEL%в Windows и IF ERRORLEVELусловную команду.
%ERRORLVL%
В DR-DOS 7.02 и выше эта псевдопеременная возвращает последний уровень ошибки в трехзначном формате с ведущими нулями, например, " 000" .. " 255". В многопользовательской DOS это настоящая переменная среды, которая автоматически обновляется оболочкой до кода возврата завершающихся программ. См. Также соответствующую псевдопеременную %ERRORLEVEL%в DR-DOS и IF ERRORLEVELкоманду.
%GREETING_TIME%
Эта псевдопеременная возвращает трехуровневое дневное время приветствия. Возвращаемая строка зависит от языковой версии DR-DOS, например, " morning", " afternoon" или " evening" в английской версии. Он похож на переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare .
%HOUR%
Эта псевдопеременная возвращает часы текущего времени в 12-часовом формате без начальных нулей, например " 1" .. " 12". Он похож на переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare .
%HOUR24%
Эта псевдопеременная возвращает часы текущего времени в 24-часовом формате в 2-значном формате с ведущими нулями, например, " 00" .. " 23". Он похож на переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare . См. Также аналогичную псевдопеременную %_HOUR%.
%MINUTE%
Эта псевдопеременная возвращает минуты текущего времени в 2-значном формате с ведущими нулями, например, " 00" .. " 59". Он напоминает переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare . См. Также аналогичную псевдопеременную %_MINUTE%.
%MONTH%
Эта псевдопеременная возвращает месяцы текущей даты в 2-значном формате с ведущими нулями, например, " 01" .. " 12". Он напоминает переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare . См. Также аналогичную псевдопеременную %_MONTH%.
%MONTH_NAME%
Эта псевдопеременная возвращает название месяца текущей даты. Возвращаемая строка зависит от версии DR-DOS, зависящей от локали, например, " January", " February", " March", " April", " May", " June", " July", " August", " September", " October" или " December" в английская версия. Он напоминает переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare .
%NDAY_OF_WEEK%
Эта псевдопеременная возвращает номер дня текущей недели, например " 1" .. " 7" (с " 1" для воскресенья). Он похож на переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare .
%OS_VERSION%
Эта псевдопеременная возвращает версию операционной системы в зависимости от текущего значения переменной среды %VER%. Если %VER%не определено, %OS_VERSION%возвращает " off". Он напоминает идентично названную переменную идентификатора в сценариях входа в систему Novell NetWare , которые могут возвращать версии также для версий DOS, не относящихся к DR-DOS.
%SECOND%
Эта псевдопеременная возвращает секунды текущего времени в 2-значном формате с ведущими нулями, например, " 00" .. " 59". Он похож на переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare . См. Также аналогичную псевдопеременную %_SECOND%.
%SHORT_YEAR%
Эта псевдопеременная возвращает год текущей даты в 2-значном формате с ведущими нулями, например, " 93" .. " 99", " 00" .. " 92". Он похож на переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare .
%YEAR% и %_YEAR%
Псевдопеременная, поддерживаемая начиная с Novell DOS 7 , %YEAR%возвращает год текущей даты в 4-значном формате, например " 1980" .. " 2099". Он похож на переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare . DR-DOS 7.02 и выше добавлены %_YEAR%для совместимости с 4DOS , возвращая то же значение.
%/%
В COMMAND.COMDR-DOS 7.02 и выше эта псевдопеременная возвращает текущую настройку SwitChar системы, либо " /" (стиль DOS), либо " -" (стиль Unix). См. Также соответствующую CONFIG.SYSдирективу SWITCHAR и переменную окружения %SWITCHAR%.
%_CODEPAGE%
Эта псевдопеременная возвращает текущую кодовую страницу системы (" 1" .. " 65533"), например, " 437", " 850", " 858". Эта переменная была первоначально введена в 4DOS , но также стала доступна с COMMAND.COMDR-DOS 7.02. См. Также CHCPкоманду.
%_COLUMNS%
Эта псевдопеременная возвращает текущее количество столбцов экрана в зависимости от режима отображения, например, " 40", " 80", " 132" и т. Д. Эта переменная была первоначально введена 4DOS , но также стала доступна с COMMAND.COMDR-DOS 7.02. См. Также аналогичную переменную среды %$WIDTH%в DOS Plus.
%_COUNTRY%
Это псевдо-переменная возвращает текущий систем код страны ( « 1„..“ 65534„), фе“ 1„для США“ , 44„для Великобритании“ , 49„в Германии,“ 20049„с ISO 8601 ,“ 21049» с ISO 8601 и Евро поддержки . Эта переменная была первоначально введена в 4DOS , но также стала доступна с COMMAND.COMDR-DOS 7.02. См. Также CONFIG.SYSдирективу COUNTRY.
%_DAY%
Эта псевдопеременная возвращает дни текущей даты без начальных нулей, например, " 1" .. " 31". Эта переменная была первоначально введена 4DOS , но также стала доступна с COMMAND.COMDR-DOS 7.02. См. Также аналогичную псевдопеременную %DAY%.
%_HOUR%
Эта псевдопеременная возвращает часы текущего времени в 24-часовом формате без начальных нулей, например " 0" .. " 23". Эта переменная была первоначально введена в 4DOS , но также стала доступна с COMMAND.COMDR-DOS 7.02. См. Также аналогичную псевдопеременную %HOUR24%.
%_MINUTE%
Эта псевдопеременная возвращает минуты текущего времени без начальных нулей, например " 0" .. " 59". Эта переменная была первоначально введена в 4DOS , но также стала доступна с COMMAND.COMDR-DOS 7.02. См. Также аналогичную псевдопеременную %MINUTE%.
%_MONTH%
Эта псевдопеременная возвращает месяцы текущей даты без начальных нулей, например " 1" .. " 12". Эта переменная была первоначально введена 4DOS , но также стала доступна с COMMAND.COMDR-DOS 7.02. См. Также аналогичную псевдопеременную %MONTH%.
%_ROWS%
Эта псевдопеременная возвращает текущее количество строк экрана в зависимости от режима отображения, например, " 25", " 43", " 50" и т. Д. Эта переменная была первоначально введена 4DOS , но также стала доступна с COMMAND.COMDR-DOS 7.02. См. Аналогичную переменную среды %$LENGTH%в DOS Plus.
%_SECOND%
Эта псевдопеременная возвращает секунды текущего времени без начальных нулей, например " 0" .. " 59". Эта переменная была первоначально введена в 4DOS , но также стала доступна с COMMAND.COMDR-DOS 7.02. См. Также аналогичную псевдопеременную %SECOND%.

Переменные системной информации, поддерживаемые DR-DOS COMMAND.COMс загруженной сетью:

%LOGIN_NAME%
Эта псевдопеременная возвращает имя пользователя. Это всегда работал с NETX, но она также будет работать с Personal NetWare «s ODI / VLM , если текущий диск является PNW отображенный диск ( в противном случае возвращается пустая строка). См. Также переменную среды с таким же названием %LOGINNAME%.
%P_STATION%
Эта псевдопеременная возвращает номер физической станции в формате " ????????????". Значение зависит от MAC-адреса сетевого адаптера, но может быть изменено. Он похож на переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare .
%STATION%
Эта псевдопеременная возвращает логический номер станции, начинающийся с " 1" для первого клиента. Номера назначаются файловым сервером и остаются неизменными, пока установлено соединение IPX . Он напоминает переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare .
%FULL_NAME%
Эта псевдопеременная возвращает полное имя вошедшего в систему пользователя, если доступно. Он напоминает переменную идентификатора с таким же именем в сценариях входа в систему Novell NetWare . См. Также соответствующую псевдопеременную %LOGIN_NAME%.

Окна

Динамические переменные среды (также называемые внутренними переменными или переменными системной информации в DOS) являются переменными псевдо-среды, которые поддерживаются, CMDкогда включены расширения командной строки, и они расширяются до различных дискретных значений при каждом запросе, то есть их значения могут изменяться при запросе нескольких раз даже в пределах одной команды. Хотя их можно использовать в пакетных заданиях и по запросу, они не хранятся в среде. Следовательно, они не перечислены SETи не существуют для чтения внешними программами. Они не чувствительны к регистру.

Косвенно они также поддерживаются в Windows COMMAND.COM, которая была изменена для внутреннего вызова CMD.EXEдля выполнения команд.

%CD%
Эта псевдопеременная расширяется до текущего каталога, эквивалентного выходным данным команды CDпри вызове без аргументов. В то время как длинное имя файла может быть возвращено в CMD.EXEзависимости от текущего каталога, тот факт, что текущий каталог всегда будет в формате 8.3 , COMMAND.COMприведет к тому, что он будет возвращать короткое имя файла COMMAND.COM, даже при COMMANDвнутреннем вызове CMD.
%CMDCMDLINE%
Эта псевдопеременная расширяется до исходных параметров запуска CMD.EXE, например, " C:\Windows\system32\cmd.exe". В Windows COMMAND.COMэто может возвращать что-то вроде " C:\Windows\system32\cmd.exe /c ..." из-за того, что COMMAND.COMвызывает CMD.EXEвнутренний.
%CMDEXTVERSION%
Эта псевдопеременная расширяется до версии расширений командной строки CMD.EXE, если она включена (например, « 1« в Windows NT »2»в Windows 2000 и Windows XP ).
%DATE%
Эта псевдопеременная расширяется до текущей даты. Дата отображается в соответствии с предпочтениями формата даты текущего пользователя .
%ERRORLEVEL%
Эта псевдопеременная расширяется до последнего установленного уровня ошибки, значения между " 0" и " 255" (без начальных нулей). Внешние команды и некоторые внутренние команды устанавливают уровни ошибок при выполнении. См. Также псевдопеременную с таким же именем %ERRORLEVEL%в DR-DOS и IF ERRORLEVELкоманду.
%RANDOM%
Эта псевдо-переменная возвращает случайное число от " 0" до " 32767".
%TIME%
Эта псевдопеременная возвращает текущее время. Время отображается в соответствии с предпочтениями формата времени текущего пользователя. Если %TIME%и %DATE%переменные оба используются, важно , чтобы прочитать их обоих в таком порядке в быстрой последовательности, чтобы избежать проблем с полуночи опрокидыванием.

Прочие снаряды

Unix-подобные оболочки имеют похожие динамически генерируемые переменные, $RANDOMхорошо известный пример - bash . Однако, поскольку эти оболочки имеют концепцию локальных переменных, вместо этого они описываются как специальные локальные переменные.

Смотрите также

Примечания

использованная литература

дальнейшее чтение

внешние ссылки