Какая часть оболочки ms dos выполняет bat-файл autoexec и отвечает за управление

Обновлено: 30.06.2024

CONFIG.SYS — это основная операционная система DOS, OS/2 и аналогичные операционные системы. Это специальный файл, содержащий инструкции по настройке или настройке компьютерной системы. CONFIG.SYS впервые использовался в DOS 2.0.

Содержание

Использование

CONFIG.SYS состоит в основном из директив name=value, которые выглядят как назначения переменных. На самом деле они либо определяют некоторые настраиваемые параметры, часто приводящие к резервированию памяти, либо загружают файлы, в основном драйверы устройств и корневой каталог диска, с которого была загружена система.

Некоторые версии DOS будут проверять альтернативные имена файлов, имеющие приоритет над именем файла CONFIG.SYS по умолчанию, если они существуют:

Хотя более старые версии Concurrent DOS 3.2–4.1 вообще не поддерживали файлы CONFIG.SYS, более поздние версии Concurrent DOS XM, а также System Manager и .BAT» (обе функции также поддерживаются корневой папкой Загрузочные диски Windows 95 и Windows 98, так как они основаны на DOS. Обычно эти файлы остаются пустыми, без содержимого, поскольку они строго не требуются для запуска программ Windows из этих версий.

Windows ME даже не анализирует файл CONFIG.SYS в процессе загрузки Windows, вместо этого загружая эти настройки из реестра Windows:

В соответствии с директивами CONFIG.SYS

Примеры

Пример CONFIG.SYS для MS-DOS 5 или выше:

Начиная с MS-DOS версии 6.0, можно было настроить необязательное загрузочное меню DOS. При этом пользователь мог настроить любое количество конфигураций загрузки и выбрать одну из них при запуске. Это было очень полезно, потому что различные приложения DOS предпочитали разные настройки для оптимальной функциональности.

Пример CONFIG.SYS с загрузочным меню MS-DOS 6.0:

Схема загрузочного меню DOS не требует пояснений. Раздел [MENU] определяет элементы меню. Параметр MENUDEFAULT позволяет выбрать значение по умолчанию с таймером обратного отсчета перед его запуском (здесь 10 секунд). Область [COMMON] содержит строки, которые будут начинаться для каждого пункта меню, а более поздние области [WIN] и [XMS] относятся к каждой конфигурации.

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

Как правило, файлы типа .SYS загружаются в CONFIG.SYS, как указано выше, и программы .EXE, такие как версия кэширующего программного обеспечения DYNALOAD ), а также программные файлы во время обработки CONFIG.SYS (с INSTALL, INSTALLHIGH или HIINSTALL).

Проблемы

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

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

Файл AUTOEXEC.BAT содержит команды DOS, которые автоматически выполняются при загрузке ПК. Файл обычно находится в корневом каталоге жесткого диска или дискеты, с которой загружается компьютер. Файл AUTOEXEC.BAT используется для установки значений по умолчанию и для запуска программ, которые должны выполняться при запуске (сопоставимо с файлом .login в учетных записях Unix). Ниже приведен список операторов, которые обычно входят в файл AUTOEXEC.BAT, за которым следует объяснение назначения каждого оператора.

Файл AUTOEXEC.BAT является примером пакетного файла, используемого для автоматизации функций в DOS. В своей простейшей форме пакетные файлы содержат команды DOS. Однако существует язык пакетных файлов, который включает команды для таких вещей, как циклы и ветви выполнения.

Эта необязательная команда подавляет отображение последующих команд во время выполнения файла AUTOEXEC.BAT. Вы также можете использовать ECHO для отображения строк текста.

Примечание. Этот пример команды PATH на самом деле должен быть помещен в одну строку в файле AUTOEXEC.BAT так, чтобы строка переносилась, а не прерывалась возвратом каретки.

Иногда вы увидите команду в форме SET PATH или PATH = . Обе являются допустимыми формами команды.

Используйте команду PATH, чтобы указать DOS, в каких каталогах искать, когда исполняемый файл находится не в текущем каталоге. Когда вы вводите строку текста в приглашении DOS, которая не является ни распознаваемой командой, ни именем исполняемого файла в текущем каталоге, DOS будет искать в каталогах в вашем PATH имя файла, которое соответствует введенному вами тексту.Эта команда настоятельно рекомендуется, если вы не используете оболочку меню. Многие пакеты (например, WordPerfect) автоматически добавляют или изменяют строку PATH в процессе установки. Путь не может превышать 127 символов и может быть дополнительно ограничен пространством вашей среды DOS.

Иногда вы можете увидеть более одной команды PATH в AUTOEXEC.BAT. Вторая и последующие команды PATH могут иметь вид:

%PATH% представляет существующий путь. В этом примере к пути будет добавлено C:\BLASTER.

Если вы введете PATH в приглашении C:\, отобразится текущий путь. Это может быть хорошим инструментом устранения неполадок, так как он может сообщить вам, если команда PATH в AUTOEXEC.BAT стала слишком длинной и, следовательно, усеченной.

SET используется для установки системных переменных, которые используются для передачи информации программам. В этих примерах команда используется для указания программам, в каких каталогах хранить определенные файлы или где хранятся файлы конфигурации. Некоторые программы (например, Windows) настраивают этот оператор в процессе установки, а многим программам для правильной работы требуются записи оператора SET в файле AUTOEXEC.BAT. В некоторых случаях требуется обратная косая черта после конца имени каталога, а пробелы в конце строки могут вызвать проблемы. Если вы введете SET в приглашении C:\, будут отображены все системные переменные.

ЗАПРОС

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

CLS очищает экран.

Примечание. Текстовый файл DOS следует создавать или редактировать только с помощью редактора DOS, такого как EDIT, EDLIN или TED. Если вы используете программу обработки текстов, обязательно сохраните файл в текстовом (ASCII) формате, а не в каком-либо специальном формате, который обычно используется текстовым процессором.

Шон хочет знать, какова была роль MS-DOS в Windows 95. Я могу пожалеть, что ответил на этот вопрос, так как это явная приманка для Slashdot. (Даже если Шон не хотел этого, это то, во что это обернется.)

Вот оно. Помните, то, что я пишу здесь, может быть не на 100% верно, но это «достаточно правда». (Другими словами, он передает суть, не увязая в мелочах.)

MS-DOS в Windows 95 служила двум целям.

  • Он служил загрузчиком.
  • Он действовал как уровень 16-разрядного устаревшего драйвера устройства.

Настроенная версия MS-DOS была полностью функциональной, поскольку фраза «полностью функциональная» может быть применена в первую очередь к MS-DOS. Так и должно было быть, поскольку это было все, что работало, когда вы запускали Windows 95 в «режиме одного приложения MS-DOS».

Оказавшись в защищенном режиме, драйверы виртуальных устройств сделали свое дело. Среди прочего, эти драйверы «высасывали мозги из MS-DOS», передавали все это состояние менеджеру 32-битной файловой системы, а затем отключали MS-DOS. Все будущие операции с файловой системой будут направляться к менеджеру 32-битной файловой системы. Если программа выдала int 21h , за его обработку будет отвечать менеджер 32-разрядной файловой системы.

И здесь вступает в игру вторая роль MS-DOS. Видите ли, программы MS-DOS и драйверы устройств любили возиться с самой операционной системой. Они заменят сервисный вектор int 21h, пропатчат операционную систему, пропатчат низкоуровневые сервисы дискового ввода-вывода int 25h и int 26h. Они также делали сумасшедшие вещи с прерываниями BIOS, такими как int 13h , низкоуровневое прерывание дискового ввода-вывода.

Когда программа отправляла вызов int 21h для доступа к MS-DOS, вызов сначала направлялся к менеджеру 32-разрядной файловой системы, который выполнял предварительную проверку, а затем, если обнаруживал, что кто-то перехватил int 21h вектор, он перейдет обратно к 16-битному коду, чтобы запустить хук. Замена служебного вектора int 21h логически аналогична созданию подкласса окна. Вы получаете старый вектор и устанавливаете новый вектор. Когда вызывается ваш заменяющий обработчик, вы делаете что-то, а затем вызываете исходный вектор, чтобы сделать «все, что обычно происходит». После возврата исходного вектора вы можете выполнить дополнительную работу, прежде чем вернуться к исходному вызывающему объекту.

Один из 16-разрядных драйверов, загруженных CONFIG.SYS, назывался IFSMGR.SYS. Задача этого 16-битного драйвера состояла в том, чтобы сначала подключить MS-DOS до того, как другие драйверы и программы получат шанс! Этот драйвер был в сговоре с менеджером 32-битной файловой системы, поскольку его задачей было перейти от 16-битного кода обратно к 32-битному коду, чтобы позволить 32-битному менеджеру файловой системы продолжить свою работу. .

Другими словами, MS-DOS была исключительно сложной приманкой. Любые 16-разрядные драйверы и программы могли исправлять или перехватывать то, что они считали настоящей MS-DOS, но на самом деле это была просто приманка. Если менеджер 32-разрядной файловой системы обнаруживает, что кто-то купил приманку, он приказывает приманке крякать.

Начнем с системы, в которой не было никаких «злых» драйверов или программ, исправляющих или перехватывающих MS-DOS.

Это был рай. Менеджер 32-битной файловой системы мог выполнять всю работу без необходимости иметь дело с надоедливыми драйверами, которые делали странные вещи. Обратите внимание на дополнительный шаг обновления переменных состояния внутри MS-DOS. Несмотря на то, что мы извлекли переменные состояния из MS-DOS во время процесса загрузки, мы синхронизировали эти переменные состояния, поскольку драйверы и программы часто «знали», как работают эти переменные состояния, и обходили операционную систему и обращались к ним напрямую. Таким образом, диспетчеру файловой системы приходилось поддерживать представление о том, что балом заправляет MS-DOS (хотя на самом деле это не так), чтобы эти драйверы и программы видели то, что им нужно.

Обратите внимание, что эти переменные состояния относятся к каждой виртуальной машине. (То есть, каждая открытая «коробка» MS-DOS получала свою собственную копию этих переменных состояния.) В конце концов, каждая коробка MS-DOS имела свое представление о текущем предмет. Однако все это было игрой, потому что реальный список открытых файлов хранился менеджером 32-битной файловой системы. Так и должно было быть, потому что дисковые кеши должны были быть согласованными, а общий доступ к файлам должен быть обеспечен глобально. Если в одном окне MS-DOS был открыт файл для монопольного доступа, то попытка программы, работающей в другом окне MS-DOS, открыть файл должна завершиться с нарушением общего доступа.

Хорошо, это был простой случай. Тяжелый случай, если у вас есть драйвер, который перехватывает int 21h . Я не знаю, что делает драйвер, допустим, что это сетевой драйвер, который перехватывает ввод-вывод на сетевые диски и обрабатывает их каким-то особым образом. Предположим также, что в системе MS-DOS запущен какой-то TSR, который перехватил int 21h, чтобы он мог выводить на экран 1, когда int 21h активен, и 2, когда int 21h завершается. Проследим обращение к локальному устройству (не сетевому, поэтому сетевой драйвер ничего не делает):

Эта статья посвящена написанию сценариев для DOS, OS/2 и Windows. Другие типы пакетного программирования см. в сценарии оболочки.

Пакетные файлы DOS имеют расширение имени файла .bat. Пакетные файлы для других сред могут иметь другие расширения, например. .cmd или .bat в семействе операционных систем Microsoft Windows NT и OS/2 или .btm в 4DOS и родственных оболочках. Устаревшее семейство операционных систем Windows 9x распознает только расширение .bat.

Содержание

История

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

Со временем у интерпретаторов команд или «оболочек» появились дополнительные функции, поскольку хранимые последовательности таких «пакетных команд» стали более сложными, а интерпретаторы команд превратились в нечто более похожее на интерпретаторы для своего рода ограниченных языков программирования или «скриптов». '. Были добавлены дополнительные команды, расширенные синтаксические функции и вычислительные возможности, что позволило писать сложные программы, чтобы пакетные файлы или сценарии могли содержать смесь традиционных команд.

Ранние влияния

На пакетный язык Microsoft DOS повлияли различные оболочки Unix, а также другие текстовые интерфейсы командной строки начала 1980-х годов, такие как CP/M, которые, в свою очередь, черпали вдохновение из TOPS-10 и TOPS-20 из Корпорация цифрового оборудования. Хотя пакетный файл DOS аналогичен сценарию оболочки в Unix-подобных операционных системах, синтаксис и набор доступных команд менее сложны.

Примером важного пакетного файла был AUTOEXEC.BAT, который автоматически запускается после загрузки DOS во время загрузки. Обычно в нем были команды для загрузки драйверов. [2]

Улучшения и альтернативы

Ограничения интерпретатора команд DOS привели к тому, что различные интерпретаторы, не принадлежащие Microsoft, предоставили расширенный синтаксис, предоставляя команды «улучшения», такие как команды Norton Utilities (такие как BE или Batch Enhancer), в 1989 году заменяющая оболочка 4DOS.

Ранние версии Windows

Microsoft Windows была представлена ​​в 1985 году как операционная система с графическим интерфейсом пользователя, альтернативная текстовой операционной системе, и была разработана для работы в MS-DOS. Для его запуска использовалась команда WIN, которую можно было добавить в конец файла AUTOEXEC.BAT для автоматической загрузки Windows. В более ранних версиях можно было запустить файл типа .bat из Windows в командной строке MS-DOS.

  • Windows 1, 2 и 3.
  • Windows 95 и 98.
  • Windows ME (доступ к реальному режиму MS-DOS был ограничен).

Операционная система IBM OS/2 поддерживает пакетные файлы в стиле DOS.Он также включал версию REXX, которая была более продвинутым языком сценариев. IBM и Microsoft начали разработку этой системы, но во время ее создания разошлись после спора, в результате чего IBM назвала свою консольную оболочку, подобную MS-DOS, без упоминания Microsoft; назвав его просто DOS, хотя это, казалось бы, не повлияло на то, как работали пакетные файлы.

Windows NT

Расширения файлов

Различия

Единственное известное различие между обработкой файлов .cmd и .bat заключается в том, что в файле .cmd переменная ERRORLEVEL изменяется даже при успешной команде, на которую влияют расширения команд (когда расширения команд включены), тогда как в файлах .bat переменная ERRORLEVEL изменяется только при ошибках. [5]

Пример

Чтобы выполнить файл, его необходимо сохранить с расширением .bat или .cmd в текстовом формате (с помощью такой программы, как Блокнот).

Результат

При выполнении (либо из проводника Windows, либо из командной строки) отображается следующее:

Пояснение

Пакетные файлы выполняются каждой строкой по порядку, пока не будет достигнут конец или что-то еще не остановит его (например, сочетание клавиш для прекращения пакетной обработки; «Ctrl» + «C»). Этот пакетный файл сначала отключает «эхо» с помощью ECHO OFF. Это останавливает отображение ввода из пакетного файла и ограничивает отображение выводом только команд. Поскольку эта команда выполняется до того, как ввод будет заглушен, символ @ используется в начале команды, которая останавливает отображение ввода в этой командной строке. Затем снова используется команда ECHO в форме ECHO.Hello World! который выводит строку Hello World! . . важен, так как он не позволяет команде ECHO путать попытку вывода строки с «ON» или «OFF» в начале с попыткой изменить состояние отображения ввода, и легче определить, какие строки являются выходными с помощью . там в качестве наглядного пособия. Затем команда ЭХО. используется, что добавляет пустую строку ниже Hello World! , снова используя . так что команда не выводит состояние входного дисплея ( ECHO включено или ECHO выключено ) и просто выводит пустую строку. Затем используется команда PAUSE, которая приостанавливает выполнение до тех пор, пока пользователь не нажмет клавишу. Нажмите любую клавишу, чтобы продолжить. . . приглашение выводится командой. Наконец, после того, как пользователь нажимает клавишу, используется команда ECHO ON, которая снова включает подсказку и ввод, так что, если файл выполняется из командной строки, а не из проводника Windows, то, когда выполнение заканчивается, пользователь может увидеть подсказку. снова использовать нормально. После достижения последней строки командный файл автоматически завершает выполнение. Если он был запущен из командной строки (путем ввода имени файла в его каталоге), то окно остается после завершения, но при запуске из проводника Windows окно автоматически закрывается по окончании выполнения.

Будущее

Microsoft пока официально не опубликовала информацию о будущем командной строки (хост для файлов .bat и .cmd), но сейчас компания начинает включать Windows PowerShell в выпуски для новых операционных систем, в которых есть все основные функции командной строки и многое другое (и вместо файлов .bat и .cmd он запускает файлы .ps1). Тем не менее, важно помнить, что нет уверенности, что это заменит командную строку, и что Microsoft по-прежнему создает важные инструменты специально для командной строки, а не для PowerShell (например, cmd.exe, который включает в себя весь набор функций диспетчера сервера). для Windows Server 2008). [6]

Другие текстовые файлы сценариев

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

Читайте также: