Использование переменных среды в Cmd.exe

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

Системные переменные среды заданы заранее в операционной системе и доступны для всех процессов Windows XP. Только пользователи с привилегиями администратора могут изменять эти переменные. Эти переменные наиболее часто используются в сценариях входа в систему.

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

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

  1. Встроенные системные переменные
  2. Системные переменные куста HKEY_LOCAL_MACHINE
  3. Локальные переменные куста HKEY_CURRENT_USER
  4. Все переменные среды и пути указаны в файле Autoexec.bat.
  5. Все переменные среды и пути указаны в сценарии входа в систему (если он имеется).
  6. Переменные, используемые интерактивно в сценарии или пакетном файле

В командной оболочке каждый экземпляр Cmd.exe наследует среду своего родительского приложения. Поэтому можно изменять переменные в новой среде Cmd.exe, что не повлияет на среду родительского приложения.

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

Переменная | Тип | Описание
%ALLUSERSPROFILE% | Локальная | Возвращает размещение профиля «All Users».
%APPDATA% | Локальная | Возвращает используемое по умолчанию размещение данных приложений.
%CD% | Локальная | Возвращает путь к текущей папке.
%CMDCMDLINE% | Локальная | Возвращает строку команд, с помощью которой был запущен данный экземпляр Cmd.exe.
%CMDEXTVERSION% | Системная | Возвращает номер версии текущих расширений обработчика команд.
%COMPUTERNAME% | Системная | Возвращает имя компьютера.
%COMSPEC% | Системная | Возвращает путь к исполняемой командной оболочке.
%DATE% | Системная | Возвращает текущие данные. Использует тот же формат, что и команда date /t. Создается командой Cmd.exe. Дополнительные сведения о команде date см. в разделе Date.
%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% | Системная | Возвращает номер модификации процессора.
%PROMPT% | Локальная | Возвращает параметры командной строки для текущего интерпретатора. Создается командой Cmd.exe.
%RANDOM% | Системная | Возвращает произвольное десятичное число от 0 до 32767. Создается командой Cmd.exe.
%SYSTEMDRIVE% | Системная | Возвращает имя диска, содержащего корневой каталог Windows XP (т. е. системный каталог).
%SYSTEMROOT% | Системная | Возвращает размещение системного каталога Windows XP.
%TEMP% и %TMP% | Системная и пользовательская | Возвращает временные папки, по умолчанию используемые приложениями, которые доступны пользователям, выполнившим вход в систему. Некоторые приложения требуют переменную TEMP, другие — переменную TMP.
%TIME% | Системная | Возвращает текущее время. Использует тот же формат, что и команда time /t. Создается командой Cmd.exe. Дополнительные сведения о команде time см. в разделе Time.
%USERDOMAIN% | Локальная | Возвращает имя домена, содержащего список учетных записей пользователей.
%USERNAME% | Локальная | Возвращает имя пользователя, выполнившего вход в систему.
%USERPROFILE% | Локальная | Возвращает размещение профиля для текущего пользователя.
%WINDIR% | Системная | Возвращает размещение каталога операционной системы.


Call

Описание

Команда Call служит для вызова одного пакетного файла из другого без завершения выполнения первого файла. Команда Call принимает метки в качестве объекта вызова. Используемая в командной строке, а не в сценарии или пакетном файле, команда Call игнорируется.

Синтаксис

call [[диск:][путь] имя_файла [пакетные_параметры]] [:метка [аргументы]]

Параметры

[диск:][путь] имя_файла
Задает имя и местоположение пакетного файла для запуска. Параметр имя_файла должен иметь расширение .bat или .cmd
пакетные_параметры
Задает данные командной строки, используемые программой пакетной обработки, включая параметры командной строки, имена файлов, пакетные параметры (в диапазоне от %0 до %9) или переменные (например %baud%)
:метка
Указывает метку, на которую должно быть передано управление программы пакетной обработки. При использовании команды call с этим параметром создается новый контекст пакетного файла, а управление передается инструкции, следующей за указанной меткой. Когда первый раз встречается конец пакетного файла (после перехода на метку), управление возвращается на инструкцию, следующую за инструкцией call. При втором достижении конца файла выполнение пакетной программы прекращается.
аргументы
Задает данные командной строки, которые передаются в новый экземпляр программы пакетной обработки, начинающейся с :метки, включая параметры командной строки, имена файлов, пакетные параметры (в диапазоне от %1 до %9) или переменные (например %baud%).
/?
Выводит справку в командной строке

Примечание

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

Пример

Для вызова программы Checknew.bat из другого пакетного файла в тексте родительского пакетного файла введите следующую строку:

call checknew

Если родительская пакетная программа принимает два пакетных параметра и требуется передать их в файл Checknew.bat, включите следующую команду в родительскую пакетную программу:

call checknew %1 %2


CHDIR

CHDIR и CD

Описание

Вывод имени либо смена текущего каталога. При использовании только с именем диска (например chdir C:) команда chdir выводит имена текущих диска и папки. Выполненная без параметров команда chdir выводит текущие диск и каталог.

Синтаксис

chdir [[/d] [диск:][путь] [..>]] [[/d>] [диск:][путь] [..]]

cd [[/d] [диск:][путь] [..]] [[/d] [диск:][путь] [..]]

Параметры

/d
Смена текущего диска или текущего каталога на диске.
[диск:][путь]
Задание имени диска (если он отличается от текущего) и каталога, в который требуется перейти.
[..]
Переход в родительскую папку.
/?
Выводит справку в командной строке

Примечания

  • Если расширения командного процессора разрешены (задано по умолчанию), имена папок в пути к текущему каталогу отображаются точно так же, как на жестком диске, в том же формате имен папок с учетом регистра. Например, если имя папки на жестком диске — C:\Temp, команда CD C:\TEMP задает текущий каталог C:\Temp, соответствующий формату имени этой папки на жестком диске.

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

    cmd e:off

    Если расширения командного процессора запрещены, в команде chdir нельзя использовать пробелы в качестве разделителей. Таким образом, можно перейти в подкаталог, имя которого содержит пробел, не заключая параметр [путь] в кавычки. Например, следующий путь позволяет перейти в подкаталог \Start menu.

    cd \winnt\profiles\username\programs\start menu
  • Переход в корневой каталог

    Корневой каталог является вершиной дерева каталогов на диске. Чтобы перейти в корневой каталог, введите следующую команду:

    cd\
  • Переход из основного каталога одного диска в основной каталог другого

    Чтобы перейти в основной каталог диска отличного от текущего, введите следующую команду:

    chdir [диск:\[каталог]]

cd [диск:\[каталог]]

    Чтобы проверить переход к этому каталогу, введите одну из следующих команд:

    chdir [диск:]

cd [диск:]
  • Команда chdir с другими параметрами доступна в консоли восстановления.

Пример

Используемая с именем диска команда chdir позволяет перейти в текущий каталог этого диска. Например, если ввести команду cd c: в приглашении каталога C:\Temp, отобразится следующая строка:

C:\Temp

Чтобы перейти в текущий каталог Cats, введите одну из следующих команд:

chdir \cats

cd \reports

Чтобы перейти из текущего каталога в подкаталог \Cats\Barsik, введите следующую команду:

cd \Cats\Barsik

Или, если текущим каталогом является \Cats, введите следующую команду, чтобы перейти в подкаталог \Cats\Barsik:

cd Barsik

Чтобы перейти из подкаталога в родительский каталог, введите следующую команду:

cd ..

Для вывода на экран имени текущего каталога можно использовать команду chdir или cd без параметров. Например, если текущим каталогом является \Cats\Barsik на диске B, вызов команды chdir приведет к следующему результату:

B:\Cats\Barsik

Если при работе на диске D требуется скопировать все файлы каталогов \Public\Jones и \Public\Lewis на диске C в корневой каталог диска D, введите следующую последовательность команд:

chdir c:\public\jones

copy c:*.* d:\

chdir c:\public\lewis

copy c:*.* d:\

Если требуется скопировать все файлы каталогов \Public\Jones и \Public\Lewis в текущий каталог диска D, введите следующие команды:

chdir c:\public\jones

copy c:*.* d:

chdir c:\public\lewis

copy c:*.* d:


Cls

Описание

Очистка окна командной строки

Синтаксис

cls

Параметры

/?
Выводит справку в командной строке

Пример

Чтобы очистить окно командной строки от старых команд, введите команду

cls


Color

Описание

Изменение цвета текста и фона в окне командной строки для текущего сеанса. Выполненная без параметров команда color восстанавливает стандартные цвета текста и фона в окне командной строки

Синтаксис

color [фт]

Параметры

тф
Меняет цвет фона (ф) и текста (т). Оба цвета указываются вместе в виде двух шестнадцатеричных цифр. Первая цифра задает цвет фона, а вторая определяет цвет текста. Можно использовать следующие шестнадцатеричные числа для обозначения цветов
0 | Черный
1 | Синий
2 | Зеленый
3 | Голубой
4 | Красный
5 | Лиловый
6 | Желтый
7 | Белый
8 | Серый
9 | Светло-синий
A | Светло-зеленый
B | Светло-голубой
C | Светло-красный
D | Светло-лиловый
E | Светло-желтый
F | Ярко-белый
/?
Выводит справку в командной строке

Пример

Чтобы изменить цвет текста на красный, а цвет фона на зеленый в окне командной строки, введите следующую команду

color 24

Примечание

Если аргумент не указан, то команда восстанавливает исходные цвета, которые были на момент запуска CMD.EXE. Это значение извлекается из текущего окна, из значения ключа /T или из значения параметра реестра DefaultColor. Нельзя использовать одинаковые значения для цвета фона и текста. Можно изменить используемые цвета также следующим образом

  • Щелкните в левом верхнем углу окна командной строки, выберите команду Умолчания (или Свойства), перейдите к вкладке Цвета и укажите цвета для параметров Текст на экране и Фон экрана
  • Для изменения цветов окна командной строки в текущем сеансе можно воспользоваться командой cmd /t:фт


DATE

Описание

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

Синтаксис

DATE [/T | дата]

Параметры

/T
Выводит текущую дату без запроса новой даты
дата
День:месяц:год. Значения должны быть разделены либо точкой (.), черточкой (-) или косой чертой (/). День может принимать значения от 1 до 31. Месяц может принимать значения от 1 до 12. Год может принимать значения от 80 до 99 или от 1980 до 2099. Windows XP автоматически изменяет текущие месяц и год в зависимости от количества дней в месяце (28, 29, 30 или 31 день).
/?
Выводит справку в командной строке

Пример

Чтобы изменить дату на 27 июля 2006г., введите команду:

DATE 27.07.2006


DEL

DEL и ERASE

Описание

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

Синтаксис

DEL [/p] [/f] [/s] [/q] [/a[[:атрибуты]] имена

ERASE [/p] [/f] [/s] [/q] [/a[[:атрибуты]] имена

Параметры

имена
Имена одного или нескольких файлов. Для удаления сразу нескольких файлов используйте подстановочные знаки. Если указан каталог, то из него будут удалены все файлы.
/p
Запрос на подтверждение перед удалением каждого файла. Команда del выводит на экран имя каждого удаляемого файла и следующее сообщение:
имя_файла, Удалить [Y(да)/N(нет)]?
Для подтверждения удаления следует нажать клавишу Y, для отмены удаления и перехода к следующему файлу следует нажать N (если задана группа файлов) или CRTL+C для остановки работы команды del.
/f
Принудительное удаление файлов, доступных только для чтения.
/s
Удаление указанных файлов из всех подкаталогов.
/q
Отключение запроса на подтверждение при удалении файлов.
/a
Отбор файлов для удаления по атрибутам. Префикс "-" имеет значение НЕ
S - Системные файлы
R - Только для чтения
H - Скрытые файлы
A - Файлы для архивирования
/?
Выводит справку в командной строке

Пример

Чтобы удалить все файлы из папки Samples на диске C, введите команду:

del c:\samples


DIR

Описание

Вывод списка файлов и подкаталогов из указанного каталога. Вызванная без параметров команда DIR выводит метку тома и серийный номер, за которыми следует список каталогов и файлов на диске, включая их имена, дату и время последнего изменения. Для файлов DIR выводит также расширение имени и размер в байтах. Команда DIR также выводит общее число перечисленных файлов и каталогов, их общий размер и свободное пространство (в байтах) на диске.

Синтаксис

DIR [диск:][путь][имя_файла] [/A[[:]атрибуты]] [/B] [/C] [/D] [/L] [/N] [/O[[:]порядок]] [/P] [/Q] [/S] [/T[[:]время]] [/W] [/X] [/4]

Параметры

[диск:][путь][имя_файла]
Диск, каталог и/или файлы, которые следует включить в список.
/A[[:]атрибуты]]
Вывод файлов с указанными атрибутами. Если ключ опущен, то DIR выводит все файлы, кроме скрытых и системных. Если ключ задан без указания атрибутов, то DIR выводит все файлы, включая системные и скрытые.
D | Каталоги
H | Скрытые файлы
S | Системные файлы
R | Доступные только для чтения
A | Файлы для архивирования
Префикс "-" имеет значение НЕ
/B
Вывод только имен файлов
/C
Применение разделителя групп разрядов для вывода размеров файлов (по умолчанию). Для отключения этого режима служит ключ /-C
/D
Вывод списка в несколько столбцов с сортировкой по столбцам
/L
Вывод нижнего регистра для имен файлов
/N
Отображение имен файлов в крайнем правом столбце
/O
Сортировка списка отображаемых файлов. Префикс "-" означает обратный порядок.
N | По имени (алфавитная)
E | По расширению (алфавитная)
G | Начать список с каталогов
S | По размеру (сперва меньше)
D | По дате (сперва более старые)
/P
Пауза после заполнения каждого экрана. Чтобы продолжить вывод следующего экрана, надо нажать любую клавишу.
/Q
Вывод сведений о владельце файла
/S
Вывод списка файлов из указанного каталога и его подкаталогов
/T
Выбор поля времени для отображения и сортировки
C | Создание
A | Последнее использование
W | Последнее изменение
/W
Вывод списка в несколько столбцов для более обширной информации
/X
Отображение коротких имен для файлов, чьи имена не соответствуют стандарту 8.3. Формат аналогичен выводу с ключом /N, но короткие имена файлов выводятся слева от длинных. Если короткого имени у файла нет, вместо него выводятся пробелы
/4
Вывод номера года в четырехзначном формате
/?
Выводит справку в командной строке

Примечания

  • Допускается использование нескольких имен_файлов. Разделяйте имена файлов пробелом, запятой или точкой с запятой. Для вывода группы файлов допускается применение подстановочных знаков (? и *) в параметре имя_файла
  • Для вывода списка подгруппы файлов и подкаталогов можно использовать подстановочные знаки (? и *).
  • Если параметр /A используется более чем с одним значением параметра атрибуты, команда DIR выведет имена только тех файлов, все атрибуты которых совпадают с заданными. Например, при использовании параметра /a:r-h команда DIR выведет имена файлов, являющихся одновременно скрытыми и защищенными от записи.
  • Параметры команды DIR могут быть предварительно заданы включением команды SET для переменной среды DIRCMD. В команде set dircmd может быть использована любая допустимая комбинация параметров команды dir, включая расположение и имя файла.
  • Данные, выводимые командой DIR можно распечатать на принтере или перенаправить в текстовый файл, используя символы перенаправления > и >>.

Пример

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

dir /s/w/o/p

Команда dir выводет имя корневого каталога, имена его подкаталогов и имена файлов (включая расширения) в этом каталоге. Затем выводятся имена подкаталогов и имена файлов в каждом каталоге дерева каталогов.

Для изменения предыдущего примера так, чтобы команда dir не выводила имена каталогов, введите следующую команду:

dir /s/w/o/p/a:-d

Чтобы вывести список всех файлов с расширением .jpg во всех каталогах диска C, введите следующую команду:

dir c:\*.jpg /w/o/s/p

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

Выводим результат выполнения команды в файл

dir>files.txt

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

dir /q /s /a:h /t:a %systemroot% >> c:\test.txt


ECHO

Описание

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

Синтаксис

ECHO [ON | OFF]
ECHO [сообщение]

Параметры

ON | OFF
Включение или отключения режима отображения на экране информации о работе команд.
сообщение
Задание текста для вывода на экран.
/?
Выводит справку в командной строке

Примечания

  • Команда echo сообщение может оказаться полезной, если отключен режим отображения работы команд. Для вывода сообщений из нескольких строк без вывода дополнительных команд между ними следует использовать несколько последовательных команд echo сообщение после команды echo off в пакетной программе.
  • Если используется команда echo off, приглашение командной строки не отображается на экране. Чтобы отобразить приглашение, введите команду echo on.
  • Чтобы отключить вывод строк, введите символ @ перед командой в пакетном файле.

Пример

Чтобы вывести на экране пустую строку, введите следующую команду:

echo.

Следующий пример представляет собой пакетный файл, выводящий сообщение из трех строк на экран с пустыми строками до и после него:

echo off
echo.
echo Эта пакетная программа
echo форматирует и проверяет
echo новые диски
echo.

Если требуется отключить режим отображения команд и при этом не выводить на экран строку самой команды echo, введите символ @ перед командой:

@echo off

Оператор if и команду echo можно использовать в одной командной строке: Например:

if exist *.rpt echo Отчет получен.


Exit

Описание

Завершает программу CMD.EXE или текущий пакетный файл-сценарий.

Синтаксис

EXIT [/B] [exitCode]

Параметры

/B
Предписывает завершить текущий пакетный файл-сценарий вместо закрытия CMD.EXE. Если выполняется вне пакетного файла-сценария, то будет завершена программа CMD.EXE
exitCode
Указывает цифровое значение. Если указан ключ /B, определяет номер для ERRORLEVEL. В случае завершения работы CMD.EXE, устанавливает код завершения процесса с данным номером.
/?
Выводит справку в командной строке

Пример

Закрываем окно программы командной строки

exit


MKDIR

MKDIR и MD

Описание

Команда MKDIR (или ее короткий аналог MD) служит для создания новой папки. Если папка с заданным именем уже существует, то команда не будет выполнена.

Синтаксис

MKDIR [диск:]путь
MD [диск:]путь

Параметры

[диск:]
Диск, на котором будет создана новая папка.
путь
Обязательный параметр. Имя и местоположение новой папки. Максимальная длина пути определяется типом файловой системы.
/?
Выводит справку в командной строке

Примечания

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

Пример

Чтобы создать папку Cats с подпапкой Barsik, содержащей папку Sons, введите:

mkdir \Cats\Barsik\Sons

Данная команда аналогична использованию следующей последовательности команд (если разрешения командного процессора запрещены):

mkdir \Cats
chdir \Cats
mkdir Barsik
chdir Barsik
mkdir Sons


TIME

Описание

Вывод или задание нового времени. При использовании без параметров, команда TIME отображает системное время и предлагает ввести новое время.

Синтаксис

TIME [/T | время]

Параметры

/T
Выводит на экран текущее системное время без предложения ввода нового.
/?
Выводит справку в командной строке

Примечания

  • Чтобы сохранить время при использовании команды time без параметров, нажмите клавишу ENTER.
  • Использование параметра /t

    Параметр командной строки /t доступен только в том случае, если расширения командного процессора разрешены (разрешены по умолчанию).

  • Задание недопустимого формата времени

    При задании недопустимого формата времени выводится сообщение и предлагается ввести время корректно:

    Указано недопустимое время
Введите новое время:_

Пример

Для установки часов компьютера на 11 часов 00 минут введите команду:

time 11:00


TYPE

Описание

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

Синтаксис

TYPE [диск:][путь]имя_файла

Параметры

[диск:][путь]имя_файла
Задает местоположение и имя файла для просмотра. Имена нескольких файлов разделяются пробелами. При использовании NTFS имена файлов, содержащих пробелы, нужно заключать в кавычки
/?
Выводит справку в командной строке

Пример

Выводим содержимое очень большого файла test.bat

type test.bat | more


VER

Описание

Отображает номер версии Windows

Синтаксис

VER

Параметры

/?
Выводит справку в командной строке

Пример

Чтобы вывести номер версии Windows, введите команду

ver


VOL

Описание

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

Синтаксис

VOL [диск:]

Параметры

диск:
Задает имя дисковода, содержащего диск, для которого будет выведена метка тома и серийный номер
/?
Выводит справку в командной строке

Пример

Чтобы получить метку тома и серийный номер диска, введите команду

vol c: