Какой язык используется в командной строке windows
Запускает новый экземпляр интерпретатора команд Cmd.exe. Если используется без параметров, Команда cmd отображает версию и сведения об авторских правах операционной системы.
Синтаксис
Параметры
Параметр | Описание |
---|---|
/C | Выполняет команду, указанную в строке , а затем останавливается. |
/k | Выполняет команду, указанную в строке , и продолжит. |
/s | Изменяет обработку строки после /c или /k. |
/q | Отключает вывод. |
/d | Отключает выполнение команд AutoRun. |
/a | Форматирует выходные данные внутренней команды в канал или файл как Американский национальный институт стандартов (ANSI) (ANSI). |
/U | Форматирует выходные данные внутренней команды в канал или файл в Юникоде. |
/t: | Задает цвета фона (b) и переднего плана (f). |
/e: вкл. | Включает расширения команд. |
/e: выкл. | Отключает расширения команд. |
/f: вкл. | Включает завершение имени файла и каталога. |
/f: выкл. | Отключает завершение имен файлов и каталогов. |
/v: вкл. | Включает отложенное расширение переменных среды. |
/v: выкл. | Отключает отложенное расширение переменных среды. |
<string> | Указывает команду, которую требуется выполнить. |
/? | Отображение справки в командной строке. |
В следующей таблице перечислены допустимые шестнадцатеричные цифры, которые можно использовать в качестве значений для параметров <b> и <f> .
Значение | Color |
---|---|
0 | Черный |
1 | Синий |
2 | Зеленый |
3 | Aqua |
4 | Красный |
5 | Сиреневый |
6 | Желтый |
7 | Белый |
8 | Серый |
9 | Светло-синий |
а | светло-зеленый |
b | Светло-голубой |
с | Светло-красный |
d | Светло-фиолетовый |
й | Светло-желтый |
f | Светлое белое |
Remarks
Чтобы использовать несколько команд для <string> , разделите их по разделителю команд && и заключите их в кавычки. Пример:
При указании параметра /c или /k, Команда cmd , оставшаяся часть строки и кавычки сохраняются только при соблюдении всех следующих условий.
Кроме того, не используется параметр /s.
Вы используете ровно один набор кавычек.
В кавычки не используются специальные символы (например, & < > () @ ^ |).
В кавычках используется один или несколько пробельных символов.
Строка в кавычках — это имя исполняемого файла.
Если предыдущие условия не выполнены, строка обрабатывается путем проверки первого символа, чтобы проверить, является ли он открывающей кавычкой. Если первый символ является открывающей кавычкой, он удаляется вместе с закрывающей кавычкой. Любой текст, следующий за закрывающими кавычками, сохраняется.
Если не указать параметр /d в строке, Cmd.exe ищет следующие подразделы реестра:
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun\REG_SZ
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun\REG_EXPAND_SZ
Если имеется один или оба подраздела реестра, они выполняются перед всеми остальными переменными.
Неправильное изменение реестра может серьезно повредить систему. Перед внесением изменений следует сделать резервную копию всех ценных данных на компьютере.
Вы можете отключить расширения команд для определенного процесса, используя /e: Off. Вы можете включить или отключить расширения для всех параметров командной строки cmd на компьютере или сеансе пользователя, задав следующие значения REG_DWORD .
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\EnableExtensions\REG_DWORD
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\EnableExtensions\REG_DWORD
Присвойте параметру REG_DWORD значение 0 × 1 (включено) или 0 × 0 (отключено) в реестре с помощью Regedit.exe. Заданные пользователем параметры имеют приоритет над параметрами компьютера, а параметры командной строки имеют приоритет над параметрами реестра.
Неправильное изменение реестра может серьезно повредить систему. Перед внесением изменений следует сделать резервную копию всех ценных данных на компьютере.
При включении расширений команд затрагиваются следующие команды:
assoc
call
chdir (CD)
color
Del (стирание)
endlocal
for
ftype
goto
if
mkdir (MD)
popd
prompt
pushd
set
setlocal
shift
Start (также включает изменения во внешние командные процессы)
При включении отложенного расширения переменных среды можно использовать символ восклицательного знака для замены значения переменной среды во время выполнения.
По умолчанию завершение имени файла и каталога не включено. Можно включить или отключить завершение имени файла для определенного процесса команды cmd с параметром /f:On | Off>. Можно включить или отключить завершение имени файла и каталога для всех процессов команды cmd на компьютере или сеанса входа пользователя, задав следующие значения REG_DWORD .
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\CompletionChar\REG_DWORD
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\PathCompletionChar\REG_DWORD
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\CompletionChar\REG_DWORD
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\PathCompletionChar\REG_DWORD
Чтобы задать значение REG_DWORD , выполните Regedit.exe и используйте шестнадцатеричное значение управляющего символа для конкретной функции (например, 0 × 9 — TAB, а 0 × 08 — это BACKSPACE). Заданные пользователем параметры имеют приоритет над параметрами компьютера, а параметры командной строки имеют приоритет над параметрами реестра.
Неправильное изменение реестра может серьезно повредить систему. Перед внесением изменений следует сделать резервную копию всех ценных данных на компьютере.
Если включить завершение имен файлов и каталогов с помощью /f: on, используйте сочетание клавиш CTRL + D для завершения имен каталогов и Ctrl + f для завершения имени файла. Чтобы отключить определенный символ завершения в реестре, используйте значение пробела [0 × 20], так как оно не является допустимым управляющим символом.
При нажатии клавиш CTRL + D или CTRL + F обрабатывается завершение имени файла и каталога. Эти функции сочетания клавиш добавляют символ-шаблон к строке (если он отсутствует), формирует список совпадающих путей, а затем отображает первый соответствующий путь.
Если ни один из путей не соответствует, функция завершения имени файла и каталога выдает звуковой сигнал и не изменяет отображение. Для перемещения по списку совпадающих путей нажмите клавиши CTRL + D или CTRL + F несколько раз. Для перемещения по списку назад нажмите клавишу SHIFT и CTRL + D или CTRL + F одновременно. Чтобы отменить сохраненный список совпадающих путей и создать новый список, измените строку и нажмите клавиши CTRL + D или CTRL + F. Если переключиться между сочетаниями Ctrl + D и CTRL + F, сохраненный список соответствующих путей отбрасывается и создается новый список. Единственное различие между сочетаниями клавиш Ctrl + d и Ctrl + f заключается в том, что сочетание клавиш Ctrl + d соответствует именам каталогов, а сочетание клавиш CTRL + F соответствует именам файлов и каталогов. Если вы используете автозаполнение имен файлов и каталогов во всех встроенных командах каталога (т. е. CD, MD или RD), предполагается завершение каталога.
Имя файла и каталога правильно обрабатывает имена файлов, которые содержат пробелы или специальные символы, если они заключены в кавычки для соответствующего пути.
Необходимо использовать кавычки для следующих специальных символов: & < > [] | < >^ = ; ! ' +, '
Если предоставленные сведения содержат пробелы, заключите текст в кавычки (например, "имя компьютера").
Если обработка имени файла и каталога выполняется из строки, любая часть пути справа от курсора отбрасывается (в точке, где обработано завершение).
Я искал везде, но не нашел ответа на этот вопрос.
Каждый веб-сайт подчеркивает тот факт, что пакетный язык используется в cmd.exe, но мне не удалось найти язык, на котором он написан.
Итак, мой вопрос:
Какой язык использовался для написания командной строки или cmd.exe в Windows?
2 ответа
Файл при открытии в текстовом редакторе содержит путь onecore\base\cmd\maxpathawarestring.cpp , который указывает на то, что по крайней мере один исходный файл написан на C ++.
под отладчиком очевидно, что последние дополнения к CMD были написаны на C ++. x cmd!*::* показывает значительное использование пространства имен C ++ std
[. ]
Но CMD по-прежнему в основном C, а не C ++. Его команды и вспомогательные функции реализованы как функции C, такие как eExit , eChdir , ParseStatement , SearchForExecutable и ExecPgm . Они не перенесли весь этот старый код C в дизайн ООП.
Так что я бы выбрал сочетание C и C ++.
Как официально подтверждено Ричардом Тернером М.С., изначально написано на C
Но некоторые его части были перенесены на C ++ на данный момент
Консоль Windows - это традиционный исполняемый файл Win32, и, хотя он изначально был написан на языке C, большая часть кода переносится на современный C ++ по мере того, как команда модернизирует и модулирует кодовую базу консоли.
Для тех, кто заботится о таких вещах: многие спрашивают, написана ли Windows на C или C ++. Ответ заключается в том, что, несмотря на объектно-ориентированный дизайн NT, как и большинство операционных систем, Windows почти полностью написана на языке C. Почему? C ++ требует затрат с точки зрения занимаемой памяти и накладных расходов на выполнение кода. Даже сегодня скрытые затраты на код, написанный на C ++, могут вызывать удивление, но в конце 1990-х годов, когда память стоимость
60 долларов за Мб (да… 60 долларов за MEGABYTE !), стоимость скрытой памяти для vtables и т. д. была значительной. Кроме того, стоимость косвенного обращения к виртуальным методам и разыменования объектов может привести к очень значительным потерям производительности и масштабирования для кода C ++ в то время. Хотя по-прежнему нужно быть осторожным, накладные расходы на производительность современного C ++ на современных компьютерах гораздо меньше беспокоят и часто являются приемлемым компромиссом, учитывая его преимущества в области безопасности, читаемости и ремонтопригодности . вот почему мы последовательное обновление кода консоли до современного C ++.
Если вы посмотрите на внутренняя структура последней версии консоли Windows, вы можете видеть, что она использует Map , Collection , что предполагает использование некоторых C ++ / CX
- ScreenInfo - поддерживает информацию об области просмотра и т. Д. И содержит TextBuffer
- TextBuffer - представляет текстовую область консоли в виде набора строк.
- Row - однозначно представляет каждую строку CharRow в консоли и атрибуты форматирования, применяемые к каждой строке.
- CharRow - содержит набор CharRowCells, а также логику и состояние для обработки переноса строк и навигации.
- CharRowCell - содержит фактический текст ячейки и байт DbcsAttribute, содержащий специфичные для ячейки флаги.
Если вас это интересует, то conhost.exe также был открыт в виде нового терминала Windows.
Вы можете найти больше хороших статей с подробной информацией в блоге о командной строке Windows
Язык оболочки командной строки ( shell language ) в Windows реализован в виде командных (или пакетных) файлов. Командный файл в Windows — это обычный текстовый файл с расширением bat или cmd, в котором записаны допустимые команды операционной системы (как внешние, так и внутренние), а также некоторые дополнительные инструкции и ключевые слова, придающие командным файлам некоторое сходство с алгоритмическими языками программирования. Например, если записать в файл deltmp.bat следующие команды:
и запустить его на выполнение (аналогично исполняемым файлам с расширением com или exe), то мы удалим все файлы во временной директории Windows . Таким образом, исполнение командного файла приводит к тому же результату, что и последовательный ввод записанных в нем команд. При этом не проводится никакой предварительной компиляции или проверки синтаксиса кода; если встречается строка с ошибочной командой, то она игнорируется. Очевидно, что если вам приходится часто выполнять одни и те же действия, то использование командных файлов может сэкономить много времени.
По умолчанию команды пакетного файла перед исполнением выводятся на экран, что выглядит не очень эстетично. С помощью команды ECHO OFF можно отключить дублирование команд, идущих после нее (сама команда ECHO OFF при этом все же дублируется). Например,
Для восстановления режима дублирования используется команда ECHO ON . Кроме этого, можно отключить дублирование любой отдельной строки в командном файле, написав в начале этой строки символ @ , например:
Таким образом, если поставить в самое начало файла команду
то это решит все проблемы с дублированием команд.
Команда ECHO . (точка должна следовать непосредственно за словом "ECHO") выводит на экран пустую строку. Например,
С помощью такого метода можно, скажем, заполнять файлы-протоколы с отчетом о произведенных действиях. Например:
Использование параметров командной строки
При запуске пакетных файлов в командной строке можно указывать произвольное число параметров, значения которых можно использовать внутри файла. Это позволяет, например, применять один и тот же командный файл для выполнения команд с различными параметрами.
Для доступа из командного файла к параметрам командной строки применяются символы %0, %1, …, %9 или %* . При этом вместо %0 подставляется имя выполняемого пакетного файла, вместо %1, %2, …, %9 — значения первых девяти параметров командной строки соответственно, а вместо %* — все аргументы. Если в командной строке при вызове пакетного файла задано меньше девяти параметров, то "лишние" переменные из %1 – %9 замещаются пустыми строками. Рассмотрим следующий пример. Пусть имеется командный файл copier.bat следующего содержания:
Если запустить его из командной строки с двумя параметрами, например
и произойдет копирование каталога C:\Programs со всеми его подкаталогами в D:\Backup.
При необходимости можно использовать более девяти параметров командной строки. Это достигается с помощью команды SHIFT , которая изменяет значения замещаемых параметров с %0 по %9 , копируя каждый параметр в предыдущий, то есть значение %1 копируется в %0 , значение %2 – в %1 и т.д. Замещаемому параметру %9 присваивается значение параметра, следующего в командной строке за старым значением %9 . Если же такой параметр не задан, то новое значение %9 — пустая строка.
Рассмотрим пример. Пусть командный файл my.bat вызван из командной строки следующим образом:
Тогда %0=my.bat, %1=p1, %2=p2, %3=p3 , параметры %4 – %9 являются пустыми строками. После выполнения команды SHIFT значения замещаемых параметров изменятся следующим образом: %0=p1, %1=p2, %2=p3 , параметры %3 – %9 – пустые строки.
При включении расширенной обработки команд SHIFT поддерживает ключ /n , задающий начало сдвига параметров с номера n , где n может быть числом от 0 до 9.
Например, в следующей команде:
параметр %2 заменяется на %3 , %3 на %4 и т.д., а параметры %0 и %1 остаются без изменений.
Команда, обратная SHIFT (обратный сдвиг), отсутствует. После выполнения SHIFT уже нельзя восстановить параметр (%0) , который был первым перед сдвигом. Если в командной строке задано больше десяти параметров, то команду SHIFT можно использовать несколько раз.
В командных файлах имеются некоторые возможности синтаксического анализа заменяемых параметров. Для параметра с номером n (%n) допустимы синтаксические конструкции (операторы), представленные в табл. 3.1.
Данные синтаксические конструкции можно объединять друг с другом, например:
DPn — из переменной %n выделяется имя диска и путь,
NXn — из переменной %n выделяется имя файла и расширение.
Рассмотрим следующий пример. Пусть мы находимся в каталоге C:\TEXT и запускаем пакетный файл с параметром Рассказ.doc ( %1=Рассказ.doc ). Тогда применение операторов, описанных в табл. 3.1, к параметру %1 даст следующие результаты:
Интерфейс командной строки противопоставляется системам управления программой на основе меню, а также различным реализациям графического интерфейса.
Формат вывода информации в интерфейсе командной строки не регламентируется; обычно это также простой текстовый вывод, но может быть и графическим, звуковым и т. д.
Содержание
Назначение
На устройстве-консоли, которое печатало текст на бумаге, интерфейс командной строки был единственным возможным. На видеотерминалах интерфейс командной строки применяется по таким причинам:
- Небольшой расход памяти по сравнению с системой меню.
- В современном программном обеспечении имеется большое число команд, многие из которых нужны крайне редко. Поэтому даже в некоторых программах с графическим интерфейсом применяется командная строка: набор команды (при условии, что пользователь знает эту команду) осуществляется гораздо быстрее, чем, например, навигация по меню.
- Естественное расширение интерфейса командной строки — пакетный интерфейс. Его суть в том, что в файл обычного текстового формата записывается последовательность команд, после чего этот файл можно выполнить в программе, что возымеет такой же (не меньший) эффект, как если бы эти команды были по очереди введены в командную строку. Примеры — bat-файлы в Windows, shell-скрипты в Unix-системах.
Если программа полностью или почти полностью может управляться командами интерфейса командной строки и поддерживает пакетный интерфейс, умелое сочетание интерфейса командной строки с графическим предоставляет пользователю очень мощные возможности.
Формат команды
Наиболее общий формат команд (в квадратные скобки помещены необязательные части):
[символ_начала_команды]имя_команды [параметр_1 [параметр_2 […]]]
- параметры разделяются пробелами (и отделяются от названия команды пробелом)
- параметры, содержащие пробелы, обрамляются кавычками-апострофами ( ' ) или двойными кавычками ( " )
- если параметр используется для обозначения включения какой-либо опции, выключенной по умолчанию, он начинается с косой черты ( / ) или дефиса ( - )
- если параметр используется для включения/выключения какой-либо опции, он начинается (или заканчивается) знаком плюс или минус (для включения и выключения соответственно)
- если параметр указывает действие из группы действий, назначенных команде, он не начинается со специальных символов
- если параметр указывает объект, к которому применяется действие команды, он не начинается со специальных символов
- если параметр указывает дополнительный параметр какой-либо опции, то он имеет формат /опция:дополнительный_параметр (вместо косой черты также может употребляться дефис)
Например, в некоей абстрактной игре может быть такая команда:
- / — символ начала команды
- map — название команды (переход на другой уровень)
- dm1 — обязательный параметр (название уровня)
- /skill:2 — дополнительный параметр (задание уровня сложности)
Применение
Основные сферы применения интерфейса командной строки:
В операционных системах
Основное применение интерфейса командной строки — интерфейс операционной системы. В Windows язык командной строки не имеет чёткой стандартизации, однако существует стандарт командной строки GNU (см. командная оболочка UNIX).
В компьютерных играх
Изначально консоль в играх использовалась для отладки.
Как только появился интерфейс командной строки, стали появляться и игры, его использующие, особенно актуально это было на тех платформах, где более сложные интерфейсы (графические) было невозможно реализовать вследствие аппаратных ограничений.
Наиболее ярким примером игр, использующих интерфейс командной строки, могут быть названы текстовые квесты, а также сетевые многопользовательские ролевые игры — MUD. Команды в таких играх вводятся на так называемом псевдоестественном языке.
Во многих графических играх присутствует консоль для облегчения доступа к настройкам игры, поскольку в сложных играх реализовать все команды через систему меню неудобно. Первая такая игра —
» (тильда); реже Enter. Консоль позволяет вносить изменения в настройки игры оперативнее, чем меню — например, набрать name Terminator быстрее, чем найти то меню, в котором вводится имя игрока, и ввести Terminator.
Также консоль предоставляет возможность изменять настройки назначения горячих клавиш, что может использоваться для обмана соперника в многопользовательских играх, например предложением ввести команду unbindall , отменяющую все горячие клавиши, в том числе и отвечающие за движение игрока.
Интерфейс, который предоставляется моддерам, не всегда позволяет менять меню; но он всегда позволяет добавлять свои консольные команды. Например, в DotA (карте для игры Warcraft III) режим игры задаёт участник, играющий синими, через консоль.
В других программах
Достоинства и недостатки
- Интерфейс командной строки не является дружественным для пользователей, которые начали знакомство с компьютером с графического режима.
- Искать неизвестную команду по справочникам не менее сложно, чем отыскивать в меню нужную команду.
- Ввод некоторых параметров с клавиатуры может быть затруднительным. Подбор громкости с помощью озвученного ползунка позволяет выставить подходящую громкость быстрее, чем из командной строки.
- Если же в программе должен быть полноценный скриптовый язык, приходится либо поддерживать два разных языка (консольный и скриптовый), либо отказываться от командной строки в пользу скриптового языка, либо совмещать эти два языка (что отрицательно сказывается на удобстве программирования).
См. также
Wikimedia Foundation . 2010 .
Полезное
Смотреть что такое "Командная строка" в других словарях:
Shell (командная строка) — Оболочка операционной системы (от англ. shell оболочка) интерпретатор команд операционной системы (ОС), обеспечивающий интерфейс для взаимодействия пользователя с функциями системы. В общем случае, различают оболочки с двумя типами интерфейса для … Википедия
Linux — Эта статья о группе операционных систем; об одноимённом ядре ОС см.: Ядро Linux. GNU и Linux … Википедия
Интерфейс командной строки — Сюда перенаправляется запрос «Интерпретатор командной строки». На эту тему нужна отдельная статья … Википедия
Интерпретатор командной строки — Сюда перенаправляется запрос Интерпретатор командной строки. На тему «Интерпретатор командной строки» нужна отдельная статья. Внешний вид оболочки (англ. Co … Википедия
21:33 14-11-2008 alexeykurskЭто всего лишь введение в команды cmd, не судите строго, статья писалась для Новиков, та и многим другим я думаю пригодиться =)
Наверно многие и не подозревают, что cmd это универсальная оболочка,
которая позволяет не просто администрировать систему, но и программировать!
Конечно уровень языка не столь высок, как например с , но все же.Для начала, напишем маленькую программку, которая будет выводить строчку, записанную в переменную.
Заходим на диск С:\ и создаем там что то типа program_1.cmd (можно *.bat)
открываем его блокнотом и вписываем туда следующие строки:rem программа_1
cls
@echo off
color 0A
set string=Hellow World.
echo %string%rem - используеться для описния коментариев
cls - если кто еще незнает, это отчистка экрана
@echo off - выключаем отображение команд на экране. Обратите внимание на @
перед ECHO! Она предотвращает эхо-отображения команд в отдельной строке.
color 0A - задаем цвет фона и текста
set string=Hellow World. - set используется для описания переменных
echo %string% - вывод на экран переменной, обратите внимание на %%, это
обозначает, что это действительно переменная, а не строка!
С кодом разобрались, теперь посмотрим на исход программы! Запускаем ее на выполнение через cmd:
program_1.cmd
Результат выполнения будет, как вы догадались Hellow World. Ярко-зелеными буквами на черном фонеТеперь немножко усложним задачку, добавим в этот код условие!
rem программа_2
cls
@echo off
color 0A
set a=1
set timer=10
if %a%==1 (shutdown /r -t %timer% -c "Вас похекали"
) else (echo a!=1)
Я думаю вы уже догадались что будет на выводе. Мы сравниваем значение записанное в переменную “а” с 1, если условие истина, то компьютер перезагрузиться через 10 секунд, в ином случае на вывод подается надпись, что a!=1. Пример банален и прост,
ну зато понятен для многих.А теперь перейдем непосредственно к циклам. Рассмотрим самый элементарный пример:
rem программа_3
cls
@echo off
color 0A
for /l %B in (0,1,10) do echo %B
данная программа выведет в столбик цифры, от 0 до 10 с шагом 1 =) все просто, как .
А теперь немного сложнее, for может использоваться в более весомых целях,
например для перебора файлов, для примера можете написать в cmd:for %B in (C:*.cmd) do (echo %B)
В ответ вы получите все ваши программки с расширением *.cmdТакже циклом for можно перебрать каталоги, к примеру
for /d %B in (C:*) do echo %B
Покажет все каталоги на диске С:\ (Обратите внимание, только каталоги, а не подкоталоги!)
А теперь напишем существенную программу, которая будет из базы выбирать емейлы и записывать их в другой файл.(for /f "tokens=1-5" %A in (users.txt) do @echo %D) > emails.txt
К примеру, база у нас «идеальная», типа:Что же еще можно сделать с cmd?
Опишу свой пример. Я занимаюсь созданием веб-сайтов, которые используют базу данных mysql. С базой я работаю через консоль, для меня привычнее. Что б не париться я написал небольшую программку mysql.cmd которая к ней будет подключаться:
PHP код:
v:
cd usrlocalmysql4bin
mysql.exe -u root –p pass
v – виртуальный диск на котором стоит денвер
root – имя пользователя
pass – пароль пользователяНам остается ее запустить и наслаждаться работой с базой
PS Ну вот собственно и все! Статья получилось маленькой, но я все же надеюсь, что она кому то будет полена =)Читайте также:
- CharRow - содержит набор CharRowCells, а также логику и состояние для обработки переноса строк и навигации.
- Row - однозначно представляет каждую строку CharRow в консоли и атрибуты форматирования, применяемые к каждой строке.
- TextBuffer - представляет текстовую область консоли в виде набора строк.