Этюды практического программирования маленькие советы

Маршрут поиска файлов
При запуске программ командный процессор обычно ищет программу (или пакетный файл) только в текущем каталоге. С помощью команды PATH можно определить тропу, указывающую, в каких еще каталогах надо искать программу. В примере
PATH c:exe;c:work после поиска файлов с расширениями .СОМ, .ЕХЕ и .ВАТ в текущем каталоге такой же поиск будет выполнен на диске С: (обычно это "винчестер", но может быть и псевдодиск) сначала в каталоге ЕХЕ, затем в каталоге WORK.
Правда, при вызове программы можно непосредственно указать каталог, в котором она находится, например
C:EXEEDITPT . Это означает, что программу РТ надо искать не в текущем каталоге, а в каталоге EXEEDIT на диске С:. Но, во-первых, перед вызовом программы указывать каталог, в котором она находится, неудобно, во- вторых, в версиях DOS 2.хх можно было указывать только имя накопителя, но не каталог. Пользователям же DOS З.хх надо знать, что если перед именем программы указать не только имя накопителя, но и имя каталога, то поиск по тропе в каталогах, указанных в PATH, вестись не будет.
Для того чтобы расширить тропу, можно использовать пакетный файл ADDPATH.BAT
PATH %l;%path% . Единственный параметр - новое место, в которое может привести тропа, например
ADDPATH d:my , после чего тропа приобретает гид, как после выполнения команды PATH d: mv;с: ехе;с: work.
Кроме команды PATH имеется команда APPEND (в версиях DOS. начиная с 3.2и), обеспечивающая доступ к данным, находящимся в других каталогах. Если вы использовали команду
APPEND b:;a: ,
то при вызове редактора текстов (Политекст) командой РТ document.doc
файл document.doc сначала будем искать в текущем каталоге, затем в корневом каталоге на диске В:, затем на диске А:. Будьте осторожны с командой APPEND (мой совет: пореже пользуйтесь ею), так как иногда возникают осложнения. Например, если вы пользуетесь редактором текстов, то при сохранении текста на диске он будет помещен, скорее всего, не на то место, где находился при вызове редактора (он был найден с помощью APPEND), а в текущий каталог. Редактор может распознать, где, в каком каталоге фактически располагался исходный текст, но это требует дополнительных усилий и аккуратности при написании редактора. То же самое относится к другим программам.
Приглашение DOS
При работе с DOS пользователь получает приглашение, которое указывает, что DOS готова принять очередную команду. Стандартное приглашение выглядит довольно невзрачно, примерно так: А>
DOS позволяет изменить приглашение в соответствии со вкусами пользователя с помощью команды PROMPT, в которой указывается строка символов, определяющая вид приглашения. Пользователь может высветить в приглашении имена текущего диска и каталога, текущее время и дату и дополнить все это произвольными комментариями. Если загружен драйвер ANSI.SYS, то можно менять цвет, яркость символов, расположение приглашения на экране дисплея. Все эти действия задаются с помощью знака $, за которым следует символ, определяющий специальную функцию. DOS понимает следующие директивы в команде PROMPT: $Р - текущий каталог, $D - дата, $Т - время, $G - знак >, $L - знак <,
$Е - символ ESC, используется для задания команд ANSI-драйве-
ра,
$Н - символ возврата на одну позицию.
Из этих директив можно составить строку, например такую:
prompt $e[s$e [0;55f$e[30;41m$t$h$h$h
$e[34;46m Антон Чижов $e|0m$e|u $e[33m$p $e[32m$g$e[0m , ITO означает: вывести в желтом цвете текущий каталог; затем запом- 1ить текущее положение курсора; в верхнем правом углу экрана дисплея вывести текущее время черным цветом на красном фоне; символами возврата на шаг убрать сотые доли секунды во времени; вывести текст "Антон Чижов" синими буквами на голубом фоне; вернуться к запомненному месту; вывести символ ">" зеленым цветом; установить белый цвет на черном фоне для ввода команд пользователем. Весь текст в команде PROMPT должен быть набран одной строкой без переноса на другую. Пример разбит на три строки для удобства чтения. Я пользуюсь при работе именно таким приглашением.
Запоминание используемого каталога
При работе с DOS иногда необходимо временно перейти в другой каталог и после окончания работы в нем вернуться к прерванной работе. Естественно, хотелось бы простой командой запомнить каталог, в котором велась основная работа, чтобы было легко возвратиться в него. Это часто бывает необходимо в командных файлах.
Запомнить каталог можно двумя способами. Для запоминания каталога первым способом достаточно выполнить команду SUBST F:
которая указывает DOS, что доступ к текущему в данный момент каталогу (".") будет вестись, как к устройству F:. После выполнения этой команды можно переходить в другой необходимый для работы каталог. Возврат к старому каталогу производится переходом на диск F:. Назначение устройства F: убирается командой SUBST F: /й
Этот способ имеет недостатки. Более гибко поставленную задачу решает командный файл
COPY olddir.dat oIddir.bat CD > > olddir.bat При этом в файле olddir.dat находится текст, состоящий из символов "CD" без перехода на новую строку. После выполнения указанного выше командного файла в файле olddir.bat окажется команда CD, обеспечивающая переход к текущему каталогу.
Таким образом, можно спокойно переходить в любой каталог, а затем вернуться в старый с помощью команды olddir
Указанный способ можно использовать в разных версиях DOS.
Условные команды в пакетных файлах
Многие программы, работающие под управлением DOS, могут устанавливать код окончания (код возврата) - число, которое несет информацию об успешности завершения программы. С помощью операторов IF и ERRORLEVEL этот код может быть проверен в командном файле, и в зависимости от его значения (а значит, и успеха выполнения программы) произведены какие-либо действия. Рассмотрим пример командного файла: echo off
rem    Первый вызов редактора текстов
pt %l.c goto comp :loop
rem    Вызов редактора текстов в цикле
rem в одном окне - текст, rem    в другом - ошибки
pt %1.с errors :comp
mc %1.с > errors if errorievel 2 goto loop
Показанная программа работает следующим образом. При вызове пакетного файла указывается один параметр - имя файла, содержащего программу на языке Си, без расширения .С. Вызывается редактор текстов (pt - Политекст Аркадия Борковского) для редактирования программы. Затем осуществляется переход на метку СОМР - компиляция (программа МС) с переназначением вывода компилятора в файл ERRORS. Если при компиляции были обнаружены ошибки (код возврата больше или равен 2), то по оператору IF будет произведен переход на метку LOOP. Здесь запускается редактор текстов уже с двумя файлами в разных окнах. Первый файл - текст программы, второй - сообщения об ошибках. После редактирования опять вызывается компилятор. Если компиляция прошла успешно (код возврата 0 или 1 - были предупреждения), то командный файл закончит работу.
 


Обсудить вопрос в студенческом форуме

 

Сайт содержит информацию о учебном заведении и студенческой общине и не является официальным