cmdhelp.ru - информация о командной строке Windows
Статьи
Команды
Форум
Warning! Warning! Нашему чудному сайту требуются волонтеры! Если вы дизайнер, сисадмин или веб-разработчик - большая просьба обратится в ICQ: 688863. Любую безвозмездную помощь очень ценим!

Общие сведения о командной оболочке

Командная оболочка — это отдельный программный продукт, который обеспечивает прямую связь между пользователем и операционной системой. Текстовый пользовательский интерфейс командной строки предоставляет среду, в которой выполняются приложения и служебные программы с текстовым интерфейсом. В командной оболочке программы выполняются и результат выполнения отображается на экране в виде, сходном с интерпретатором Command.com MS-DOS. Командная оболочка Windows XP использует интерпретатор команд Cmd.exe, который загружает приложения и направляет поток данных между приложениями, для перевода введенной команды в понятный системе вид. Имеется возможность использовать командную оболочку для создания и редактирования пакетных файлов (также называемых сценариями), что позволит автоматизировать выполнение обычных задач. Например, можно использовать сценарии для автоматизации управления учетными записями пользователей и ежедневной архивацией в нерабочие часы. Также можно использовать сервер сценариев Windows, CScript.exe, для выполнения в командной оболочке сложных сценариев. Выполнение операций с помощью пакетных файлов является более эффективным, чем с помощью интерфейса пользователя. Пакетные файлы принимают все команды, доступные из командной строки. Дополнительные сведения о пакетных файлах и создании сценариев см. в разделе Использование пакетных файлов. Имеется возможность настроить окно командной строки для облегчения просмотра и для увеличения контроля за выполнением программ. Дополнительные сведения о настройке окна командной строки см. в разделе Настройка командной строки.

Использование синтаксиса команд

Синтаксическая структура выводится в том порядке, в котором следует вводить команду и следующие за ней параметры, если они есть. Следующий пример команды xcopy иллюстрирует разнообразие синтаксических форматов текста. xcopy источник [результат] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:мм-дд-гггг]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a|/m}] [/n] [/o] [/x] [/exclude:файл1[+[файл2]][+[файл3]] [{/y|/-y}] [/z] В следующей таблице показано, как следует интерпретировать различные текстовые форматы.

Форматирование

Формат Значение
Курсив Данные, которые должен ввести пользователь
Полужирный шрифт Элементы, которые следует вводить точно, как показано
Пропуск (...) Параметры могут повторяться несколько раз в командной строке
В квадратных скобках ([]) Необязательные элементы
В фигурных скобках ({}); варианты разделены вертикальной чертой (|). Пример: {четные|нечетные} Набор значений, из которого можно выбрать только одно значение
Шрифт Courier Текст кода или выхода программы

Использование нескольких команд и символов условной обработки

Можно выполнять несколько команд из одной командной строки или сценария с помощью сиволов условной обработки. При использовании нескольких команд, содержащих символы условной обработки, выполнение команд, стоящих справа от символа условной обработки, будет проводиться в зависимости от результатов выполнения команды, стоящей слева от символа. Например, требуется, чтобы команда выполнялась, только если предыдущая команда не была выполнена успешно. Или требуется, чтобы команда выполнялась, только если предыдущая команда была выполнена успешно. Для передачи нескольких команд можно использовать специальные символы, перечисленные в следующей таблице.
Символ Синтаксис Определение
& [...] команда1 & команда2 Используется для разделения нескольких команд в одной командной строке. В Cmd.exe выполняется первая команда, затем вторая команда.
&& [...] команда1 && команда2 Запускает команду, стоящую за символом &&, только если команда, стоящая перед этим символом была выполнена успешно. В Cmd.exe выполняется первая команда. Вторая команда выполняется, только если первая была выполнена успешно.
|| [...] команда1 || команда2 Запускает команду, стоящую за символом ||, только если команда, стоящая перед символом || не была выполнена. В Cmd.exe выполняется первая команда. Вторая команда выполняется, только если первая не была выполнена (полученный код ошибки превышает ноль).
( ) [...] (команда1 & команда2) Используется для группировки или вложения команд.
; или , команда1 параметр1;параметр2 Используется для разделения параметров команды.
Примечания
  • Амперсанд (&), вертикальная черта (|) и скобки ( ) являются специальными символами, которым должен предшествовать управляющий символ (^) или кавычки, если эти символы передаются в качестве аргументов.
  • Если команда завершает операцию успешно, возвращается нулевой (0) код ошибки или не возвращается никакого кода. Дополнительные сведения о кодах завершения см. в разделе Пакеты Microsoft Windows Resource Kits.

Вложенные командные оболочки

Имеется возможность вкладывать командные оболочки в 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% Системная Возвращает номер модели процессора, установленного на компьютере.
    %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% Системная Возвращает размещение каталога операционной системы.

    Установка переменных среды

    Используйте команду 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.
    [ Назад]