Лекция: Замечание
Вместо имени файла можно указывать обозначения устройств компьютера. В Windows поддерживаются следующие имена устройств: PRN (принтер), LPT1–LPT3 (соответствующие параллельные порты), AUX (устройство, присоединяемое к последовательному порту 1), COM1–COM3 (соответствующие последовательные порты), CON (терминал: при вводе это клавиатура, при выводе — монитор), NUL (пустое устройство, все операции ввода/вывода для него игнорируются).
1.3 Перенаправление ввода/вывода и конвейеризация (композиция) команд
Windows поддерживает UNIX-концепции переназначения устройств стандартного ввода/вывода и конвейерного выполнения команд.С помощью переназначения ввода/вывода одна программа может направить свой вывод на вход другой или перехватить вывод другой программы, используя его в качестве своих входных данных. Таким образом, имеется возможность передавать информацию от процесса к процессу. Практически это означает, что для программ, которые используют стандартные входные и выходные устройства, операционная система позволяет выводить сообщения программ не на экран (стандартный выходной поток), а в файл или на принтер (перенаправление вывода); читать входные данные не с клавиатуры (стандартный входной поток), а из заранее подготовленного файла (перенаправление ввода); передавать сообщения, выводимые одной программой, в качестве входных данных для другой программы (конвейеризация или композиция команд).
В командной строке для того, чтобы перенаправить текстовые сообщения, выводимые какой-либо командой, в текстовый файл, необходимо использовать конструкцию
команда > имя_файла
Если при этом заданный для вывода файл уже существовал, то он перезаписывается (старое содержимое теряется), если не существовал — создается. Можно также не создавать файл заново, а дописывать информацию, выводимую командой, в конец существующего файла. Для этого команда перенаправления вывода должна быть задана так:
команда >> имя_файла
С помощью символа < можно прочитать входные данные для заданной команды не с клавиатуры, а из определенного (заранее подготовленного) файла:
команда < имя_файла
Примеры перенаправления ввода/вывода.
Вывод встроенной справки для команды COPY в файл copy.txt:
COPY /? > copy.txt
Добавление текста справки для команды XCOPY в файл copy.txt:
XCOPY /? >> copy.txt
Ввод новой даты из файла date.txt (DATE — это команда для просмотра и изменения системной даты):
DATE < date.txt
Если при выполнении команды возникает ошибка, то сообщение об этом по умолчанию выводится на экран. В случае необходимости сообщения об ошибках (стандартный поток ошибок) можно перенаправить в текстовый файл с помощью конструкции
команда 2> имя_файла
Также имеется возможность информационные сообщения и сообщения об ошибках выводить в один и тот же файл. Делается это следующим образом:
команда > имя_файла 2>&1
Например, в приведенной ниже команде стандартный выходной поток и стандартный поток ошибок перенаправляются в файл copy.txt:
XCOPY C:\1.txt F: > copy.txt 2>&1
C помощью конструкции
команда1 | команда2
можно использовать сообщения, выводимые первой командой, в качестве входных данных для второй команды (конвейер команд).
Используя механизмы перенаправления ввода/вывода и конвейеризации, можно из командной строки посылать информацию на различные устройства и автоматизировать ответы на запросы, выдаваемые командами или программами, использующими стандартный ввод.
Для решения таких задач предназначена команда ECHO [сообщение],которая выводит сообщение на экран.
Примеры использования этой команды.
Посылка символа прогона на принтер:
ECHO ^L > PRN
Соединение по телефону из командной строки (модем связан с портом COM2):
ECHO ATDT 1(123)555-1234 > COM2