|
Расширенные функции командной строки
- Синтаксис команд DOS
- Обзор команд файловой системы
- Символы шаблонов
- Переназначение и конвейеризация
Мы уже рассматривали командную строку DOS в 4.2.1 Лабораторная работа: Команды DOS. Более правильно назвать ее "Командная строка Microsoft (Microsoft command line)", так как она не ограничена DOS. Фактически тот же интерфейс командной строки используется во всех версиях операционной системы Windows.
С сегодняшней средой GUI большинству пользователей компьютера командная строка нужна довольно редко. Начальная инсталляция Windows и восстановлениепосле проблем, которые препятствуют выполнению Windows GUI, – две ситуации, где пользователь зависит от командной строки, но такое случается редко. Однако, одна общая задача, где командная строка является предпочтительным решением – создание сценариев под названием "Пакетные файлы". Пакетные файлы – текстовые файлы, содержащие команды DOS, используемые для выполнения программ и управления файлами.
В конце этой страницы мы рассмотрим некоторые расширенные особенности командной строки. Затем, на следующих двух страницах, мы рассмотрим, как построены командные файлы.
Синтаксис команд DOS
Команды DOS имеют специфический синтаксис, о котором упоминалось ранее в этом курсе. Каждая строка начинается с имени команды или имени программы. (Большинство команд DOS – фактически программы). После имени команды может идти один или более переключателей или ключей (switches). Ключзаписывается как слеш, за которым следует буква. Например, dir /wуказывает команде работы с каталогами использовать "широкий" (расширенный) формат списка. Ключи могут также содержать параметры, которые отделяются двоеточием. Например, dir /o:s указывает команде dir упорядочить файлы по размеру, а dir /o:-g напечатать список имен каталогов в обратном порядке.
У команды могут также быть параметры, такие как имя файла или путь. Возможны и другие виды параметров. Точная форма определяется синтаксисом команды. Команда dir /w c:\ имеет путь c:\как параметр; Эта команда печатает расширенный список файлов на диске c:\.
Ключ /?указываеткоманде показать справку, описывающую синтаксис команд, возможные ключи и действия команды. Если вы знаете имя команды, которую хотите использовать, но не помните ее синтаксис или ключи, вы можете использовать ключ /?для получения справки. Набирая del /?в командной строке Windows Me получим следующее:
C:\> del/? Deletes one or more files. (Удалениеодногоилиболеефайлов)
DEL [drive:][path]filename [/P] ERASE [drive:][path]filename [/P]
[drive:][path]filename Specifies the file(s) to delete. Specify multiple files by using wildcards. (Указатьфайл(ы)дляудаления. Указатьмножествофайлов,используясимволыобобщенияимен) /P Prompts for confirmation before deleting each file. (Запрос на подтверждение удаления перед удалением каждого файла.)
Пример сверху иллюстрирует некоторые из специальных соглашений, используемых средствами DOS справки (DOS Help) для точного описания синтаксиса команд:
- Слова, набранные в верхнем регистре, такие как "DEL" и "ERASE", должны быть набраны точно также, как они показываются в справке (Help).
- Слова, набранные в нижнем регистре, означают переменную информацию, которую задает пользователь. Например, "drive:" указывает, какое имя используется для диска (например: A: или C:), "path" указывает на "путь" (например \Windows\bin), и "filename" указывает имя файла (например program.exe).
- Все что заключено в квадратные скобки ("[" и "]" ) является необязательным. Если пользователь не назначил значение для необязательного элемента, командный процессор использует значение по умолчанию. Например, если нет имени диска или пути, то командный процессор предполагает, что файл расположен в текущем рабочем каталоге, как указано в справке. Команда dir использует *.* в качестве имени файла по умолчанию, то есть будет показан список всех файлов в текущем каталоге. Но, если для команды del устройство и путь необязательны, то имя файла пользователь обязательно должен выбрать.
- Многоточие ( ...) указывает, что предыдущий элемент можно повторять любое число раз. Этого нет в примере с del, но если установить filename ..., то любое число файлов может быть удалено сразу. (В некоторых версиях Windows, команда del не принимает параметры с множеством имен файлов).
- За исключением использования разнообразных параметров в командной строке, все компоненты должны быть набраны в определенном порядке, в котором они появляются в описании синтаксиса в справке (Help) . Параметры могут стоять в любом порядке, в том числе и между другими аргументами.
Командный процессор приглашает пользователя вводить данные с клавиатуры, когда ожидает новой команды. Подсказка часто появляется как буква дисковода, путь и правая угловая скобка ( > ). Например, подсказка может быть "C:\Windows>". Устройство и путь обращаются к "Рабочему каталогу". Если вы указываете путь файла, который не начинается с индикатора корневой папки ( \ ), командный процессор предполагает, что путь начинается в текущем рабочем каталоге. Лучше указать полный путь к файлу, во избежание непредусмотренных последствий. Все что вы набираете, может быть как в верхнем регистре, так и нижнем, так как процессор командной строки не различает регистр.
Обзор команд файловой системы
Далее – список команд DOS, обычно используемых для управления файлами. "Directory" ("Каталог") – старый термин который пользователи Windows сейчас называют "папками" (folders). Если вы хотите узнать больше об этих командах, их синтаксисе и дополнительных опциях, наберите имя команды после параметра /?.
cd
| Смена рабочего каталога.
| md
| Сделать новый католог.
| rd
| Переместить существующий пустой каталог
| deltree
| Переместить существующий каталог и его компоненты. (В Windows NT/2000 используется rd /s)
| attrib
| Смена атрибутов файла (например, файл только для чтения, системный файл, скрытый файл)
| copy
| Сделать копию файла.
| xcopy
| Сделать копию файлов и подкаталогов.
| ren
| Переименовать файл в каталоге.
| move
| Переместить файл с одного диска/каталога на другой
| del
| Удалить файлы Предупреждение: Файлы, удаленные из DOS или из командной строки Windows не могут быть восстановлены.
| dir
| Просмотр файлов в каталоге.
| type
| Просмотр содержимого текстового файла.
| Таблица1 Команды DOS
Символы обобщения имени
Определенные команды воспринимают список имен файлов. Вместо печати списка проще использовать звездочку ( * ) в спецификации имени файла, чтобы командный процессор сгенерировал для нас список имен файлов. Звездочка ( * ) служит символом шаблона,который может соответствовать любому числу символов в имени файла. Ниже - некоторые примеры звездочки, используемой в качестве символа шаблона с командой dir:
Вывести только те файлы и папки из корневой папки, чьи имена начинаются с "n": dir c:\n* - Вывести только те файлы и папки из корневой папки, чьи имена заканчиваются на "n":
dir c:\*n Вывести только те файлы и папки из корневой папки, чьи имена содержат "n": dir c:\*n * Вывести только те файлы из корневой папки, которые имеют расширение DOC: dir c:\*.doc Вывести все файлы и папки из корневого каталога. dir c:\* В этом последнем примере символ шаблона можно опустить dir c:\ работает точно так же. Вы должны быть очень осторожны, используя символы шаблона в интерфейсе командной строки. Когда вы вводите команду с правильным синтаксисом, процессор командной строки попытается осуществить действие, даже если вы этого и не хотели. Интервалы очень важны, так как они отделяют различные объекты в пределах команды точно так же, как отделяют слова в предложении. Рассмотрим следующие две команды:
del c:\w*
и
del c:\w *
Первая команда удаляет все файлы в корневом каталоге, чьи имена начинаются с "w". Во второй команде, обратите внимание на пробел между "w" и "*". Вторая команда удаляет не только файл называющийся C:\w, но и все файлы в текущей директории – все это только потому, что "*" стоит отдельно!
Есть другой, специфический символ шаблона - знака вопроса ( ? ) (question mark). Шаблон знака вопроса представляет один любой символ. Это означает, что символ должен находиться в ячейке, указанной знаком вопроса. Рассмотрим следующие две команды:
del c:\*.* del c:\????????.???
Первая команда удаляет все файлы в корневом каталоге диска c:. Вторая команда, которая использует знак вопроса, удаляет только файлы с именами, состоящими из восьми символов и расширениями из трех символов. Шаблон знака вопроса особенно полезен, когда имя файла известно, но точного написания имени нет, оно является обобщенным. Посмотрите, как шаблон знака вопроса может использоваться там, где точное название не известно.
Первый вариант
| Второй вариант
| Третий вариант
| Andersen
| Anderson
| Anders?n
| Tim
| Tom
| T?m
| Таблица 2 Использование шаблонов
Использование шаблона звездочки дает больше несвязанных результатов, чем вопросительный знак в этих ситуациях. "?" чаще всего используется для ссылки на группу файлов с похожими именами – file1, file2, file3, file4, и так далее:
Dir file?
Переназначение и конвейеризация
Процессор командной строки обеспечивает некоторый дополнительный синтаксис, который может использоваться для управления вводом данных программой (если это не клавиатура) и направлением вывода (если не на монитор). Это средство называется перенаправлением (redirection). Большинство команд и программ написаны для ссылки на виртуальные устройства, известные как Стандартный Ввод (Standard Input)и Стандартный Вывод (Standard Output)для целей ввода/вывода I/O. На ПК, командный процессор координируется с операционной системой, чтобы перенаправить все данные от драйвера клавиатуры к виртуальному устройству стандартного ввода, а все данные от виртуального устройства стандартного вывода к драйверу дисплея. Переназначение позволяет пользователю изменить этот порядок, связывая виртуальные устройства с другими данными, расположенными, например, на диске. Левая скобка ( < ) используется для перенаправления стандартного ввода, а правая угловая скобка ( > ) используется для перенаправления стандартного вывода. Например, команда dir >files.txtвызывает запись командой dir списка файлов каталога в файл FILES.TXT текущего каталога.
: Ниже несколько примеров использования перенаправления.
- Вывести список файлов текущего каталога на принтер.
dir c:\*.* >lpt: - Создать новый текстовый файл с именем "temp.txt", содержащий список файлов из корневого каталога. (Примечание:На дисплее ничего не появится):
dir c:\*.* >c:\temp.txt - Запустить "program.exe" и указать ему взять данные из текстового файла INPUT.DAT, а не с клавиатуры:
c:\program.exe <c:\input.dat - Запустить "program.exe", указать ему взять данные из текстового файла "input.dat", а не с клавиатуры и отобразить вывод на принтере:
c:\program.exe <c:\input.dat >lpt: Другая часть синтаксиса позволяет назначить вывод в конец файла – или создать файл, если он еще не существует. Это делается, используя >>дляпереназначения записи. Например, чтобы добавить список файлов корневого каталога в конец файла TEMP.TXT, сделайте следующееdir c:\*.* >>c:\temp.txt. Если вы сделаете это дважды, у вас в файле будет две копии списка, потому что >>означает присоединениек файлу вместо его перезаписи.
Конвейеризацияфункция командного процессора, которая связывает две команды вместе через переназначение: вывод первой команды становится вводом для второй. Для того чтобы обеспечить это, Стандартный Вывод (Standard Output) первой команды переназначается во временный файл, созданный командным процессором. Вторая команда в командной строке затем вызывается командным процессором, который перенаправляет стандартный Ввод во временный, только что созданный файл. После того, как вторая команда завершается, временный файл удаляется командным процессором.
Для передачи данных из одной команды в другую, как описано выше, пользователь отделяет две команды в командной строке символом вертикальной черты ( | ). (Символ вертикальной черты иногда произносится " трубка"(pipe)) Мы уже видели пример pipe в другихкомандах:
Показать все параметры команды dir: dir /? | more
Другая команда, обычно использующая конвейеризациюкоманда findstr, которая находит строки в файле, согласующиеся с определенной строкой, или шаблоном.
Чтобы отобразить текущие переменные среды, чьи имена содержат строку "HOME", сделайте следующее:
set | findstr /i home
Ключ /iговорит findstr,что она должна принимать буквы как верхнего, так и нижнего регистра.
***************************************************************
Команды пакетного файла
Подобно Макроопределениям, которые обсуждались в 4.2.2 Лабораторная работа: Макросы, командные файлы также автоматизируют задачи. Этот раздел дает краткий обзор командных файлов и охватывает некоторые команды, которые могут использоваться в командных файлах.
Пакетные файлы
Терминпакетный файл (batch file) означает не-диалоговый. В ранних компьютерных системах, пользователи представляли программы в виде перфокарт, которые собирались в пакеты и запускались. Вывод затем печатался и возвращался пользователям. При дальнейшем развитии операционных систем, пакетная обработка стала включать в себя функцию планирования, при помощи которой система выбирала, какую работу выполнять следующей, основываясь на уровне приоритета и требуемых ресурсах. Также можно указать, чтобы работа выполнялась в определенное время дня (например, делать резервные копии диска ночью), или многократный, например еженедельный, отчёт о состоянии и движении запасов или ежемесячная платежная ведомость компании. Хотя основная идея была в том, чтобы пакетные программы были автономны и не зависели от взаимодействия с пользователем.
Командный файл под Windows или "сценарий командного процессора" (shell script) в UNIX, выполняет похожую функцию. Он состоит из последовательности команд для выполнения программ и операций с файлами. Можно сконструировать абсолютно автономные командные файлы, которым для запуска не нужно взаимодействия с пользователем, но это не является строго необходимым. Как вы увидите, процессор командной строки DOS, выполняющий командные файлы должен предусматривать некоторые простые формы взаимодействия с пользователем.
Командный файл под Windows текстовый файл (не файл Word), с расширением .BAT. Командный файл содержит команды DOS и имена программ для выполнения. Файл также может содержать команды управления потоком данных, которые указывают процессору команд сделать цикл (повторить определенные команды) или обработать состояния ошибки определенным способом.
Общее использование командных файлов записывать новые команды. Например, есть командный файл SWAP.BAT, который меняет два файла, переименовывая их:
REM Here is the source to SWAP file1 file2 Это смена файлов file1 file2 @ECHO OFF REM Remember that / precedes a switch. Запомните что / стоит перед ключом REM Use HELP DEL or DEL /? to find out about /Q Используйте HELP DEL or DEL /? Для того чтобы узнать о /Q DEL/Q TEMP MOVE %1 TEMP MOVE %2 %1 MOVE TEMP %2
Обозначения %1, %2, и т.п., относятся к параметрам команды обмена. Если пользователь набирает "SWAP A.TXT B.DOC" в командной строке, то SWAP ссылается на новую команду, определенную нашим командным файлом, и на время выполнения командного файла, %1 эквивалентен A.TXT , а %2 эквивалентен файлу B.DOC. Также, используя операторы присваивания, можно ввести имена переменных в командном файле, например %NAME%.
Создание командного файла — фактически вид программирования, использующий очень ограниченный язык. Одна необычная особенность этого языка в том, что синтаксическая ошибка в одной строке не останавливает выполнение файла. Если встречается синтаксическая ошибка, то выдается сообщение об ошибке и командный файл продолжается следующей командой. Это может иметь непредусмотренные последствия. Так же как и другие виды программ важно проверить командный фай перед использованием его в любом важном приложении.
Команды
Ниже приведен список команд обычно используемых в командных файлах:
rem remark Это обозначает, что все что следует за командой remв строке (remark в нашем примере) является комментарием.
echo message Эта команда отображает сообщение (message) в стандартном устройстве вывода (Standard Output), которым обычно является монитор. Команда echo может также использоваться вместе с переназначением вывода для отправки сообщения в файл. Например, echo starting stage three.
Echo.
Обратите внимание на точку ( . ) в конце команды echo.Это специальный вариант команды echo, который отображает пустую строку в стандартном устройстве выводе.
@echo off
Останавливает отображение команд в пакетном файле на стандартном выводе. По умолчанию, каждая строка текста в командном файле, обрабатываемая командным процессором, отображается в стандартном устройстве вывода. Этот режим удобен в при отладке. Часто вывод на дисплее смущает пользователей, так что большинство команд, записанных ввиде командных файлов, начинаются с @ echo off.
Pause
Эта команда прерывает выполнение командного файла и отображает сообщение "Нажать любую клавишу для продолжения...." Выполнение возобновился, когда будет нажата клавиша на клавиатуре. Эта команда полезна, если вы хотите вынудить командный файл остановиться и дождаться действия пользователя (например, вставки диска) до продолжения выполнения.
: label
Любая строка в командном файле, начинающаяся с двоеточия ( : ) считается меткой. Метки используются определенным потоком команд управления для повторения или пропуска определенных строк в файле. После двоеточия ( : ) дается соответствующее имя для метки. Имя не должно содержать пробелов.
goto label Эта команда указывает процессору команд выполнить первую командную строку за меткой, установленной в команде.
if exist filename command
Эта команда определяет наличие файла или подкаталога в текущем рабочем каталоге. В примере выше, если утверждение верно (то есть, если файл, названный filename, существует), то команда (command в нашем примере) выполняется. Так, команда if exist index.html del indexопределяет, существует файл index.htmlи, если он существует, то удаляет его.
В лабораторной работе следующего раздела даются примеры использования этих команд применительно к пакетному файлу.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|