Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
iCarnecie_SSD2_RU_v5 (2).docx
Скачиваний:
18
Добавлен:
23.12.2018
Размер:
6.54 Mб
Скачать

4.3 Пакетные файлы сценариев

В разделе 4.2.2 Лабораторная работа: Макросы, мы обсуждали макросредство, которое существует во многих приложениях, обеспечивая возможность пользователю возможности назначения комбинаций клавиш или ярлыков (shortcut) для выполнения часто повторяющихся действий. Такое же средство часто требуется при взаимодействии с интерфейсом пользователя операционной системы (часто называемым "Командный интерпретатор" (command interpreter) или "оболочка"(shell)). Например, вы хотите установить ежедневную подпрограмму, которая копирует все файлы подготовки текстов на съемный диск и удаляет все файлы в папке "Temp" на жестком диске. Кроме того, возможно вы хотите, чтобы эти действия выполнялись ночью, когда нет никого, кому они могли бы потребоваться.

Если вы используете операционную систему с интерфейсом GUI, как например Windows, в ней нет средств для записи последовательности действий, которые вы выполняете неоднократно. Решение – создать текстовый файл (под названием "командный файл" ("batch file") – под DOS и Windows, и "сценарий" ("script") – под UNIX), который для этого использует интерфейс командной строки операционной системы.

Последовательность чтения:

  • 4.3.1 Расширенные функции командной строки. Цель изучения: Знание синтаксиса, специальных символов, переназначения, конвейерной обработки и часто используемых файловых команд, используемых в командных файлах.

  • 4.3.2 Команды пакетного файла. Цель изучения: Больше знаний об использовании пакетных файлов и специфики команд DOS в пакетных файлах.

Кроме того: Изучите Rob van der Woude's Scripting Page. Эта страница содержит общую информацию относительно языков сценариев и конкретно командные файлы.

  • 4.3.3 Лабораторная работа: Создание пакетного файла. Цель изучения: Практический опыт в создании и выполнении пакетных файлов DOS.

4.3.1 Расширенные функции командной строки

  • Синтаксис команд 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, что она должна принимать буквы как верхнего, так и нижнего регистра.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]