КрасносельскийКонстантинКонстантинович |
ТаблицейБлоками.Оптимизация и спасение IBM PC: Autoexec.bat |
Последняя модификация: 10.08.2014 г
Страница загружена с адреса: http://comp.site3k.ru/ibmpc/chaptr14.html
Файл Autoexec.bat тесно связан с файлом Config.sys и, не смотря на обработку интерпретатором другого языка, в связи с наличием сходств во многих языках программирования, имеет некоторые сходные с ним черты (в том числе аналогичные и, даже, дублирующие команды). В нем так же применяется команда REM и загрузка в верхнюю память, только для последней, вместо окончания High применяется дополнительная команда LH (Load High), как и команда REM, отделяемая от основной команды пробелом. Например: LH mouse.com.
Поскольку .bat файлы представляют собой набор команд операционной системы, их называют так же, командными файлами.
Составляя Autoexec.bat, стоит учесть, что некоторые нестандартные программы, при установке требуют в памяти большего места, чем займут, установившись. Такие программы следует устанавливать в первую очередь, чтобы потом не оказалось, что они не могут развернуться (соответствующее сообщение будет выведено на экран).
Устанавливает каталоги, содержащие исполняемые файлы. В одной строке можно указать несколько каталогов (но не более 127 символов), каждый из которых должен отделятся точкой с запятой. Например:
Path C:\Windows; C:\Windows\Command
При вводе файла без расширения или с расширением .exe, .com, .bat, они ищутся в текущем каталоге, корневом каталоге и каталогах заданных этой командой, что позволяет запускать программы не указывая путь к ним. При этом поиск начинается с первого указанного каталога и, чем больше каталогов установлено командой Path, тем дольше он происходит. Кроме того, каждая новая команда Path отменяет предыдущую.
Приостанавливает исполнение программы до нажатия пользователем какой-нибудь клавиши, с выводом на экран сообщения аналогичного выводимому при исполнении некоторых программ с параметром /p: Нажмите любую клавишу . Используется, например, перед исполнением в командном файле команды по запуску программы; если вместо любой клавиши будет нажато сочетание CTRL+BREAK или CTRL+C, исполнение команды будет предотвращено.
Очистка экрана. В основном применяется для удобочитаемости сообщений, выводимых MS-DOS.
Эта команда имеет несколько отличных модификаций.
Echo off отключение вывода исполняемых команд на экран, чтобы они не вытесняли предшествующие им сообщения.
Echo on восстановление вывода.
Echo служит для вывода текстовых сообщений или звуковых сигналов, записываемых, по крайней мере, через интервал от самой команды. Например:
ECHO LOADING
(каждый лишний пробел будет выводиться на экран, смещая сообщение вправо).
При этом русскоязычные сообщения должны записываться в коде ASCII (шрифт Terminal) и не могут использоваться, пока командами MODE не будет обеспечен вывод на экран русифицированных шрифтов. А запись звукового сигнала в файл производится нажатием и отпусканием клавиши 7 калькуляторной клавиатуры, при нажатой клавише ALT (для выполнения этой операции подойдет не каждый редактор, и у каждого из подходящих свои особенности; в MS-DOS редакторе Edit, входящем в состав Windows, переход на вставку управляющих кодов осуществляется нажатием CTRL+P).
Echo. (с точкой) вывод пустой строки для удобочитаемости.
Не выводить данную команду (аналог Echo off, однократного действия). Часто применяется в сочетании с ней, для того чтобы и сама команда ECHO off не выводилась: @Echo off.
Присваивает значение переменным. Стандартными переменными, устанавливаемыми автоматически, являются:
Cmdline содержит имя последней внешней команды.
Winbootdir устанавливает папку, содержащую ядро Windows, по ней же, ориентируются инсталяторы программ.
Windir аналогичная переменной Winbootdir, но появляется только при загруженом Windows, в режиме MS-DOS она отсутствует.
Blaster устанавливает параметры саундкарты
Temp указывает место хранения временных файлов
Comspec определяет имя и расположение интерпретатора команд для режима MS-DOS (начальная стадия загрузки Windows)
Prompt указывающая параметры командной строки
Path указывающая пути к приложениям
Cdrom указывает синоним (букву) компакт-диска
Ramd указывает синоним виртуального диска
А наиболее часто устанавливаемые в ручную:
WinPmt определяет вид командной строки для сеанса MS-DOS, отличный от того, какой она имеет в режиме MS-DOS или режиме Command Prompt Only.
TMP вместе с переменной Temp, указывающая место хранения временных файлов, чтобы программы не задавали об этом вопросов.
PkTemp задает отличный от текущего каталог для временных архивов архиватора PkZip.
NC определяет каталог в котором программа Norton Comander должна искать свои компоненты.
Между переменной и присваиваемым ей значением обязательно устанавливается оператор присвоения =. Например:
Set Temp=C:\Windows\Temp
Отмена значений переменной осуществляется либо вводом новых, либо вводом ее без значения. Например:
Set Path=
При этом, отмена значений, может применяться для удаления лишних переменных с тем, чтобы освободить место в области отведенной для их хранения.
Введенная без переменных, команда SET приводит к выводу на экран отчета о переменных уже установленных.
Заключение переменной в символы процента, интерпретируется как значение переменной. Например, после создания переменной NC со значением C:\NC\nc.exe, ввод %nc% будет означать запуск Norton Commander из папки C:\NC. Эту возможность можно применить при необходимости создания команды Path большой длины или добавления нового пути, без перезаписи всей команды. Set Path=%Path%; НОВЫЙ ПУТЬ добавит к существующим путям еще один.
Переменная DirCmd позволяет установить параметры команды Dir (просмотр каталога в MS-DOS), автоматически присваиваемые этой команде, наиболее насущными из которых являются = /ogn /p. После установки Set dircmd= /ogn /p при введении команды Dir, содержимое каталога будет сортироваться по именам, начиная с папок, и выводится на экран с паузой после каждого заполнения (добавление /B позволит просматривать каталоги без дополнительных комментариев со стороны операционной системы, а добавление /A приведет к отображению файлов с любыми атрибутами).
Установка вида командной строки. Возможные параметры:
$P отображать путь в командной строке (без него работа проблематична).
$N отображать текущий дисковод.
$T отображать текущее время
$V отображать версию операционной системы
$_ переход на новую строку
$S пробел
$H каждый такой знак удаляет один предыдущий символ (например, сотые долей секунды из показаний времени)
$E символ с кодом 27 (клавиша Escape)
$G символ >
$1 символ <
$B символ |
$$ символ $
Например, Prompt $P$G стандартное приглашение выглядящее как (например) C:\Windows>.
Кроме стандартных параметров начинающийся с символа доллара, команда позволяет ввести в командную строку любой текст, не содержащий специальных символов.
Например: prompt Common!$_$P$G красноречиво говорит о том, что это строка приглашения. Результат ее исполнения выглядит так:
Common! C:\>
Подключение через Config.sys драйвера Ansi.sys позволяет с помощью этой команды менять цвета.
Вывод на экран версии операционной системы. В отличии от Prompt $v, имеет однократное действие.
Команда вывода на экран с паузами после каждого заполнения. Для продолжения вывода требуется нажатие любой клавиши.
Например: More C:\Autoexec.bat постраничный вывод на экран содержимого файла Autoexec.bat Содержащегося в корневом каталоге диска С.
Dir | more постраничный вывод содержимого текущего каталога (аналогично Dir/p)
Эта команда внешняя, требующая указания пути к программе More.exe, если путь к каталогу ее содержащему не отмечен в команде Path. Обычно данная программа содержится в каталоге C:\Windows\Command, а он в свою очередь, указывается в Path по умолчанию, так что пользователь может выдавать ее, не задумываясь, о путях. В противном случае, она принимает вид:
C:\Windows\Command\More C:\Autoexec.bat
Внешняя команда установки и снятия атрибутов. Где указание атрибута со знаком отрицания, приводит к его удалению, а без отрицания к установке. Если атрибут не указан, он остается без изменений. При этом:
R Только для чтения
A Архивный (не имеющий копии в архиве)
H Скрытый
S Системный
Дополнительный параметр /S может устанавливаться для обработки так же и файлов содержащихся во вложенных каталогах, например: ATTRIB r C:\*.* /S
Вызов командного файла из другого командного файла для выполнения записанных в нем команд. Например, Call SetRamd.bat. Если вызвать командный файл иным способом (без Call), управление перейдет к нему и дальнейшее выполнение команд вызвавшего его файла прекратится.
Выполнение команды для указанного подмножества файлов.
For %%x in (1.txt 2.txt) do del %%x
Где x любая буква, назначаемая временной переменной для хранения имен файлов назначеного подмножества.
Означает:
Для указанных файлов (1.txt и 2.txt) сделать Del (удалить)
Или:
For %%x in (Config.sys Autoexec.bat) do copy %%x C:%%x
Скопировать указанные файлы на диск C:
Или:
For %%x in (*.Zip) do PkUnZip %%x
Распаковать все ZIP-архивы текущего каталога программой PkUnZip.
Данные примеры приведены для аналогии. Реальное удаление или распаковку проще выполнять без всяких FOR. Однако, в случае програм не умеющих работать со списками или шаблонами, оператор FOR окажется безценным. Например:
For %%n in (*.exe *.com) do PkLite -o -b %%n
Сожмет все програмы текущего каталога, зарезервировав их в Bak-файлах и перезаписав оригиналы.
Или:
For %%n in (*.*) do expand %%n C:\Prog
Распакует текущий дестрибутив в каталог C:\Prog.
При выдаче FOR из командной строки, вместо %% применяется % (второй % в командные файлы добавляется для избежания неоднозначности при наличии дополнительных параметров их вызова).
Временный вызов интерпретатора команд MS-DOS (командного процессора) из командной строки Windows или программы-оболочки. Выдача этой команды с параметром /E позволяет изменить величину памяти отведенную для хранения переменных, что может потребоваться при появлении сообщения: Out of Environment Spase (Нет памяти в окружении).
Выход из командного процессора с возвращением в вызвавшую его программу (если он был временно вызван).
Эта команда не может применяться в командных файлах, если они выполняются первичным интерпретатором, а не вызванным поверх него вторичным например, второй копией Command.com, Command.com вызванным из Windows (сеанс MS-DOS) или чем-то еще в том же духе.
Команда безусловного перехода (Go to идем к) к указанному, через один интервал, блоку. Например: GOTO END. При этом блоки начинаются с метки, обозначаемой двоеточием, а символы следующие через пробел после названия блока, игнорируются, и могут использоваться для комментариев. В частности, заглавие блока END может иметь вид:
:END Этот блок содержит общие программы.
После получения команды перехода, процессор начинает исполнять команды следующие за указанной меткой, минуя все предшествующие команды.
Применение команды перехода в командной строке невозможно.
Команда проверки условия (команда если) за которой следует команда, выполняемая в случае его соблюдения. При этом условия бывают четырех типов:
Exist существует
Строка1==Строка2
ERRORLEVEL код завершения предшествующей условию программы
NOT не (условие ложно)
Например, команда Если на диске С существует Autoexec.bat, сообщить, что он существует, имеет вид:
if exist C:\Autoexec.bat echo Существует
А команда Если нет файлов .bak в каталоге С:, идем к метке NO_BAK, а если есть удалить эти файлы имеет вид:
If Not Exist C:\*.Bak GoTo No_Bak
If Exist C:\*.Bak Del C:\*.Bak
Или проще:
If Not Exist C:\*.Bak GoTo No_Bak
Del C:\*.Bak
Применение условий:
Exist для выполнения операции только при наличии некоторых файлов
Строка1==Строка2 для выполнения операции только в случае если некому параметру, включаемому в первую строку, присвоено значение указанное пользователем (без пробелов) во второй. При этом, в качестве параметров первой строки (иногда второй), часто применяются символы от %0 до %9 при исполнении принимающие значение имени и параметров командного файла.
%0 принимает значение пути и имени файла с расширением
%1 принимает значение первого параметра
%2 второго
и т. д.
Тогда команда выполняется, если оно аналогично значению второй строки, благодаря чему, можно, несколько командных файлов объединить в один, разделенный на блоки (до 9), исполняемые в зависимости от параметра, заданного при вызове этого файла. Например, ввод команды Choice.bat Y приведет в исполнение команду (допустим, по запуску соответствующего блока), файла Choise.bat следующую за условием IF %1==Y . Однако, для избежания ошибок могущих возникнуть в случае, когда файл вызывается с количеством параметров меньшим предусмотренного, замену строки на символ %, лучше производить с вводом дефиса (иначе часть строк1 будут иметь значение пустой строки):
IF -%1==-СТРОКА21
Еще лучше, если обе строки берутся в кавычки:
if %1==СТРОКА2 или If %1== СТРОКА2
в таком случае, даже пустая строка, заключенная в кавычки может иметь значение.
Так же, в качестве строки может применяться переменная заключенная с обеих сторон в проценты (что означает ее фактическое значение, о чем говорилось в описании команды Set).
Errorlevel для выполнения операции, только если выполнение предыдущей программы закончилось с результатом (называемом кодом завершения или возврата), равным или превосходящим тот, что определен в условии Errorlevel (поскольку команда срабатывает при равных или больших кодах возврата, последовательность из нескольких подобных команд должна начинаться с тех, что имеют наибольшее значение). Например:
If errorlevel=5 goto end
If errorlevel=4 copy 1.txt C:
Для применения условий содержащих ссылку на коды возврата, необходимо знание этих кодов.
По умолчанию, переменная Errorlevel=0 (то есть, ее нет).
Not для выполнения команды, только если условие Exist, строки или Errorlevel не соблюдается (например, для перехода к следующему блоку, чтобы миновать команды обработки файлов, если таковых не существует).
Внешняя команда выбора, предназначенная для генерации кодов возврата. При исполнении, она выдает некоторое сообщение и предлагает несколько вариантов ответа, нужный из которых вводится нажатием соответствующей клавиши.
Формат команды:
CHOICE /C ПАРАМЕТРЫ СООБЩЕНИЕ
Где СООБЩЕНИЕ сообщение, которое программа должна вывести на экран
варианты ответов.
ПАРАМЕТРЫ дополнительные параметры, среди которых:
/tN,nn автоматический выбор варианта N после nn секунд ожидания.
/N исполнение Choice без вывода, каких либо вопросов и сообщений (имеет смысл при сочетании с предварительным сообщением выведенным иным способом).
После исполнения программы, Errorlevel приобретает значение равное соответствующему порядковому номеру выбранного символа. Например, ввод Choice без параметров аналогичен Choice /CYN, где выбор Y дает код возврата 1, а выбор N дает код возврата 2.
Команда проверки нажатия Ctrl+Break (или Ctrl+C) может вводиться не только в Config.sys, но и в командной строке или командном файле. Варианты: Break on или Break off. Просто Break приводит к выводу на экран текущего состояния режима проверки.
Многие программы во время работы устанавливают режим BREAK ON самостоятельно, даже если он отключен пользователем.
Сдвиг параметров, заданных при вызове командного файла, на значение следующего по старшинству параметра.
Например, если файл 1.Bat вызван командной строкой 1.bat aa bb, то изначально, %0==1.bat, %1==aa, %2==bb, а после команды Shift, %0==aa, %1==bb, а %2 утрачивает значение.
Сдвиг происходит при каждом исполнении команды и применяется для расширения возможностей команды IF строка1==строка2, позволяя задавать вызываемому файлу, бесконечное число параметров (после первого сдвига, %9 принимает значение десятого параметра).
Многократный сдвиг до тех пор, пока не будет найден нужный параметр, осуществляется комбинацией команд:
If -%1==- GoTo No_Param If -%1==-Требуемый_параметр GoTo Stop :Cicle Сдвиг параметров, вслучае, когда условие не верно. Shift If -%1==-Требуемый_параметр GoTo Stop echo Не тот параметр. Для остановки цикла и прекращения поиска, требуется нажатие CTRL+C Pause GoTo Cicle :No_Param echo Параметры не указаны. Будут выполнены команды, предусмотренные на этот случай. GoTo End :Stop Далее пойдут команды выполняемые, если параметр совпал. :End
Сортировка данных в алфавитном порядке (или в обратном, с параметром /R)
КОМАНДА > ФАЙЛ вывод команды в указанный файл, с заменой существующего или созданием нового. Может использоватся для создания файла, подлежащего дальнейшей обработке, что актуально для программ-оболочек имеющих средства редактирования файлов, но не имеющих средства их создания.
КОМАНДА >> ФАЙЛ вывод сообщения в конец файла, с сохранением ранее записанной информации.
КОМАНДА < ФАЙЛ чтение данных для обработки не с клавиатуры, а из указанного файла.
КОМАНДА | КОМАНДА использование сообщений выводимых первой командой в качестве вводных данных для второй.
Например:
Sort < файл 1 > файл 2 сортировка данных из указанного файла с записью результатов в другой файл.
Echo Y | Win запуск Windows из режима MS-DOS без запроса на подтверждение (заранее отвечено Yes).
Dir /OGN > C:\1.txt отсортировывает оглавление указанной в команде DIR папки (здесь текущей папки) и записывает его в файл 1.txt на диске С, создавая его, если он еще не существует.
Экран и клавиатура. Применяется в сочетании с командой MODE или для перенаправления ввода и вывода. Например:
COPY файл CON заменяет команду TYPE, выводя содержимое указанного файла на экран.
Может иметь несущественные параметры.
Пустота. Имеет разнообразное применение. Например:
Copy A:\*.* nul проверяет читаемость диска А.
> nul переадресовывает сообщение пустому устройству, а заданное после какой-то команды, дает ей понять, что ее сообщения никому не нужны (работай молча).
Echo Y | Win > nul запускает Windows из режима MS-DOS не только без необходимости ввода подтверждения, но и без вывода сообщений о начале загрузки Windows.
Подобные переадресовки, наряду с командами @ и Echo off позволяют не засорять экран. Например:
@ Mouse.com > nul устанавливает драйвер мыши под MS-DOS без вывода на экран команды установки и итогового сообщения о том что, драйвер мыши установлен (в тихую).
Меняет устройства используемые для ввода-вывода. Например:
Ctty nul указывает, что ввод команд будет осуществляться из ниоткуда (на ввод не реагировать).
Включение в командный файл этой команды приводит к невозможности прервать выполнение командного файла, однако, вслед за командами, прерывание которых требуется предотвратить (если это не способ подшутить над приятелем), необходимо включение в командный файл команды CTTY CON, иначе работа с компьютером будет невозможной.
Сопоставление пути к какому-либо файлу с фиктивным диском. Например, после ввода:
SUBST H: C:\Windows\Command\EBD
запуск программы Edit.exe находящейся в каталоге C:\Windows\Command\EBD можно осуществить выдачей команды H:\Edit.
При этом буква пути не должна соответствовать реальному диску и не должна превышать буквы установленной командой LastDrive файла Config.sys. Кроме того, некоторые команды и программы не реагируют на подобные синонимы (например, команда Copy).
Копировать.
COPY ФАЙЛ1 ФАЙЛ2 ПАПКА копировать несколько файлов в указанную папку.
COPY ФАЙЛ1+ФАЙЛ2 ФАЙЛ3 объединяет первые два файла в третий, дописывая второй в конец первого.
Параметры:
/-Y запрашивать перед заменой файлов (принимается по умолчанию).
/Y замещать файлы при совпадении имен без запроса (чтобы замена без запроса принималась по умолчанию, требуется с помощью команды SET ввести переменную CopySMD=/Y)
Команда COPY не распространяется на каталоги, скрытые и системные файлы, не замещает файлы имеющие атрибут только для чтения и не копирует файлы нулевой длины.
Внешняя команда MS-DOS, для копирования не только файлов, но и вложенных каталогов (внутренняя команда Copy предназначена только для файлов). Из множества возможных параметров команды, наибольшее значение имеют следующие:
/S копирование всего содержимого, кроме пустых каталогов, если таковые имеются.
/S /E абсолютное копирование, даже если каталоги пусты.
/V убедится в том, что при копировании не возникло ошибки.
При этом:
Команда не распространяется на файлы предназначенные только для чтения;
При недостаточности места, вместо Диск переполнен, команда выводит сообщение Ошибка в создании файла;
Команда не создает каталог, если папка, в которой он должен находиться имеет файл с таким же названием (в таком случае, требуется предварительное создание каталога другими средствами).
Внешняя, для удаления каталогов. Возможен параметр /Y для удаления без запроса на подтверждение.
Внешняя команда установки режимов работы посимвольных устройств под управлением MS-DOS (например, при запуске компьютера).
Mode con Codepage prepare=((номер) файл)
устанавливает локализованный экранный шрифт (кодовую страницу) для которого указывается номер и файл его содержащий (русскую 866 страницу содержит файл Ega3.cpi).
Mode con codepage select=номер
переводит работу системы на использование установленного предыдущей командой шрифта (приводит к выбору кодовой страницы).
Возможные сокращения:
CP Codepage
REP Prepare
SEL Select
Дополнительно обеспечиваемые режимы:
BW40 черно-белое изображение, 40 символов в строчке.
BW80 черно-белое изображение, 80 символов.
CO40 цветное изображение, 40 символов.
CO80 цветное изображение, 80 символов.
Mono монохромный монитор (черно-белое изображение).
Внешняя команда настройки клавиатуры, где:
Сокращение абривиатура клавиатуры (буквенный код), для русского языка RU.
Номер необязательный номер кодовой страницы (русская страница 866)
Файл ссылка на локализованный файл описания (драйвера) клавиатуры.
При пропуске параметра, запятые должны оставаться, например:
keyb ru,,C:\WINDOWS\COMMAND\keybrd3.sys
Контроль над выполнением записи на диск аналог параметра /V при вводе некоторых команд, действующий постоянно. Возможные параметры:
ON включить контроль
OFF выключить
По умолчанию OFF.
VERIFY без параметров выводит текущее состояние контроля.
Ошибок при выполнении записи на диск обычно не возникает и проверку ее правильности можно не включать, но береженого и Бог бережет. Появление общих кластеров чревато серьезными последствиями, по этому, команду Verify on лучше включить в Autoexec.Bat. Выполнение записи при этом несколько замедлится, но на современных компьютерах это вряд ли станет заметно.
Внешняя, создает кеш жесткого диска, выполняя функции аналогичные команде Buffers, но более эффективно и, только для жестких дисков. Возможны параметры S и /A где S размер кеша в килобайтах (по умолчанию 256), /A отправляет кеш в отображаемую память (тогда, по умолчанию, он занимает всю бездействующую память).
Команда отправки программы в верхнюю память (Load High). Для ее исполнения необходима загрузка из Config.sys менеджеров (драйверов) верхней памяти.
В состав Windows входят некоторые еще не описанные исполняемые файлы (внешние команды):
Chkdsk.exe отчет о состоянии диска
Debug.exe отладчик программ
Diskcopy.com копирование дискет с соблюдением физического расположения файлов
Doskey.com резидентная программа редактирования командной строки
Extract.exe распаковка Каб-файлов
Fc.exe сравнение файлов
Find.exe поиск текста
Label.exe изменение метки тома
Move.exe перемещение файлов
Restart.com перезапуск компьютера
Scanreg.exe программа проверки, восстановления, исправления и резервирования реестра.
Share.exe обеспечение совместного использования файлов
Start.exe запуск приложений Windows из сеанса MS-DOS (вообще-то, они и без нее запускаются)
Все они (кроме Restart.com), находятся в папке Command. Параметры их запуска, если таковые потребуются, можно узнать, вызывая их с параметром /?.
< Глава 13. Глава 14. Глава 15. >