Амперсанд (&), вертикальная черта (|) и скобки ( ) являются специальными символами, которым должен предшествовать управляющий символ (^) или кавычки, если эти символы передаются в качестве аргументов.
Если команда завершает операцию успешно, возвращается нулевой (0) код ошибки или не возвращается никакого кода.
Вложенные командные оболочки
Имеется возможность вкладывать командные оболочки в Cmd.exe, открывая новый экземпляр Cmd.exe из командной строки. По умолчанию каждый экземпляр Cmd.exe наследует среду своего родительского приложения Cmd.exe. Вложение экземпляров Cmd.exe позволяет вносить в локальную среду изменения, которые не повлияют на родительское приложение Cmd.exe. Это позволяет сохранять исходную среду Cmd.exe и возвращаться к ней после удаления вложенной командной оболочки. Изменения вложенной командной оболочки не сохраняются. Чтобы создать вложенную командную оболочку, в командной строке введите: cmd Появится сообщение следующего вида:
Microsoft (R) Windows XP (TM) (C) Copyright 1985-2001 Microsoft Corp.
Чтобы закрыть все вложенные командные оболочки, введите команду exit. Можно еще уже локализовать изменения в экземпляре Cmd.exe (или в сценарии) с помощью команд setlocal и endlocal. Команда setlocal создает локальную область, а endlocal ее удаляет. Любые изменения, сделанные внутри области, созданной командами setlocal и endlocal, не учитываются; таким образом исходная среда остается без изменений. С помощью этих команд можно создать до 32 вложенных областей. Дополнительные сведения о командах setlocal и endlocal см. в разделах Setlocal и Endlocal.
Использование переменных среды в Cmd.exe
Среда командной оболочки Cmd.exe определяется переменными, задающими поведение командной оболочки и операционной системы. Имеется возможность определить поведение среды командной оболочки или среды всей операционной системы с помощью двух типов переменных среды: системных и локальных. Системные переменные среды определяют поведение глобальной среды операционной системы. Локальные переменные среды определяют поведение среды в данном экземпляре Cmd.exe. Системные переменные среды заданы заранее в операционной системе и доступны для всех процессов Windows XP. Только пользователи с привилегиями администратора могут изменять эти переменные. Эти переменные наиболее часто используются в сценариях входа в систему. Локальные переменные среды доступны, только когда пользователь, для которого они были созданы, вошел в систему. Локальные переменные из куста HKEY_CURRENT_USER подходят только для текущего пользователя, но определяют поведение глобальной среды операционной системы. В следующем списке представлены различные типы переменных в порядке убывания приоритета: встроенные системные переменные, системные переменные куста HKEY_LOCAL_MACHINE, локальные переменные куста HKEY_CURRENT_USER, все переменные среды и пути указаны в файле Autoexec.bat, все переменные среды и пути указаны в сценарии входа в систему (если он имеется), переменные, используемые интерактивно в сценарии или пакетном файле.
В командной оболочке каждый экземпляр 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% | Системная | Возвращает номер модели процессора, установленного на компьютере. |
%PROMPT% | Локальная | Возвращает параметры командной строки для текущего интерпретатора. Создается командой Cmd.exe. |
%PROCESSOR_REVISION% | Системная | Возвращает номер модификации процессора. |
%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% | Системная | Возвращает размещение каталога операционной системы. |
Чтобы испытать действие командной строки, я, запустив её, решила ввести несколько команд. Первым делом я ввела команду help. На экране стал доступным список всех остальных команд. Потом я ввела команду time. На экране отобразилось текущее время с точностью до миллисекунд и запрос на введение нового времени.
Установка переменных среды
Используйте команду set для создания, удаления или отображения переменных среды. Команда set изменяет переменные только в среде текущей оболочки. Чтобы отобразить переменную, в командной строке введите: set имя_переменной Чтобы добавить переменную, в командной строке введите: set variablename=значение Чтобы удалить переменную, в командной строке введите: set имя_переменной= Имеется возможность использовать большинство символов в качестве значений переменных, в том числе пробел. При использовании специальных символов, таких как <, >, &, или ^, перед ними следует помещать управляющий символ (^) или кавычки. При использовании кавычек они включаются в значение переменной, так как все символы, следующие после знака равенства принимаются за значение переменной. Учтите следующие примеры.
Чтобы создать значение переменной new&name ,введите: set varname=new^&name
Чтобы создать значение переменной "new&name" ,введите: set varname="new&name"
При вводе в командной строке set varname=new&name появляется следующее сообщение об ошибке:
"'name' is not recognized as an internal or external command, operable program or batch file."
В именах переменных регистр символов не учитывается. Однако, команда set отображает значение переменной так, как оно было введено. Можно комбинировать символы нижнего и верхнего регистра в именах переменных, чтобы облегчить восприятие кода (например, ИмяПользователя). Примечания
Максимальный размер отдельной переменной среды составляет 8192 байта.
Максимальный общий размер всех переменных среды, включая имена переменных и знак равенства, составляет 65 536 Кбайт.
Подстановка значений в переменные среды
Чтобы иметь возможность подставлять значения в переменную среды из командной строки или из сценариев, следует заключить имя соответствующей переменной в символы процентов (%имя_переменной%). Символы процентов указывают на то, что Cmd.exe должен обратиться к значениям переменных, а не делать посимвольное сравнение. После определения значения для имени переменной, заключите имя переменной в символы процентов. Cmd.exe проводит поиск всех вхождений имени переменной и заменяет его на определенное значение переменной. Например, требуется создать сценарий, содержащий различные значения (например, имена пользователей), и требуется определить соответствующее значение переменной среды USERNAME для каждого пользователя. Для этого следует написать сценарий с использованием переменной USERNAME, заключенной в кавычки. При выполнении сценария Cmd.exe заменит вхождения %USERNAME% соответствующими значениями, что избавит от необходимости делать это вручную для каждого пользователя. Подстановка значений не является рекурсивной. Cmd.exe проверяет переменные один раз. Дополнительные сведения о подстановке значений в переменные см. в разделах For и Call.