Материал: Аверянов Введение в оператсионные системы и основы программирования 2015

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

backup papa vasya vasya1.txt

d:\WINLAB>move vasya1.txt vasya\every\answer\

Перемещенофайлов: 1. d:\WINLAB>tree vasya /f D:\WINLAB\VASYA ├───every

└───answer

vasya1.txt

└───mod

├───moscow

└───yeah d:\WINLAB>

d:\WINLAB>more < vasya\every\answer\vasya1.txt

На это каждый ответит, каждый ответит: d:\WINLAB>

Аналогичным образом предлагается создать файл VASYA2.TXT (см. табл. 2.2, рис. 2.5).

Следует отметить, что команда ECHO используется также для переключения режима отображения команд на экране (ввод ECHO без параметра служит для определения текущего состояния):

ECHO [ON | OFF]

К перенаправлению ввода/вывода можно отнести копирование данных командой COPY с консоли в файл и из файла на консоль. По умолчанию, устройством ввода консоли является клавиатура, а устройством вывода – экран монитора, в общем случае входные и выходные устройства консоли могут быть переопределены. Системное имя консоли в Windows: CON.

Пример 2.27. Перенаправление ввода/вывода с консоли и на консоль d:\WINLAB>tree vasya /f

D:\WINLAB\VASYA ├───every

└───answer

vasya1.txt

vasya2.txt

└───mod

├───moscow

└───yeah

101

d:\WINLAB>copy con vasya\mod\yeah\vasya3.txt

Нукто его не знает? Yeah, yeah!

^Z – Символ «конец файла», инициируемый нажатием «Ctrl+Z»

Скопировано файлов:

1.

d:\WINLAB>tree vasya /f D:\WINLAB\VASYA ├───every

└───answer

vasya1.txt

vasya2.txt

└───mod

├───moscow

└───yeah vasya3.txt

d:\WINLAB>more < vasya\mod\yeah\vasya3.txt

Нукто его не знает? Yeah, yeah!

d:\WINLAB>copy vasya\mod\yeah\vasya3.txt con

Нукто его не знает? Yeah, yeah! Скопировано файлов: 1. d:\WINLAB>

Когда речь идет о вводе данных, то CON – это клавиатура, а когда о выводе данных, то именем CON обозначается экран монитора. Используя копирование с консоли CON (пример 2.27), создадим файлы VASYA3.TXT и VASYA3.TXT как на ветке B (см. рис. 2.5, табл. 2.2).

Перенаправление вывода в файл с добавлением строк: «>>» будет рассмотрено немного позже, теперь же необходимо разобраться с конвейерами команд. Наиболее часто конвейеры используются в задачах поиска и сортировки данных – для этого в основном используются команды: FIND и MORE.

Пример 2.28. Применение конвейера для получения списка текстовых файлов

d:\WINLAB>tree vasya /f

D:\WINLAB\VASYA ├───every

└───answer

vasya1.txt

vasya2.txt

└───mod

├───moscow

vasya4.txt

102

└───yeah vasya3.txt

d:\WINLAB>dir vasya /b /s

d:\WINLAB\vasya\every

d:\WINLAB\vasya\mod

d:\WINLAB\vasya\every\answer

d:\WINLAB\vasya\every\answer\vasya1.txt

d:\WINLAB\vasya\every\answer\vasya2.txt

d:\WINLAB\vasya\mod\moscow

d:\WINLAB\vasya\mod\yeah

d:\WINLAB\vasya\mod\moscow\vasya4.txt

d:\WINLAB\vasya\mod\yeah\vasya3.txt

d:\WINLAB>dir vasya /b /s | find ".txt"

d:\WINLAB\vasya\every\answer\vasya1.txt

d:\WINLAB\vasya\every\answer\vasya2.txt

d:\WINLAB\vasya\mod\moscow\vasya4.txt

d:\WINLAB\vasya\mod\yeah\vasya3.txt

d:\WINLAB>

Команда FIND ищет строки в файлах или в тексте ввода и выводит строки, соответствующие условию. Например, можно получить список всех файлов с расширением .txt в текущем каталоге и его подкаталогах, перенаправив вывод команды DIR на ввод FIND через конвейер (пример 2.28).

Пример 2.29. Применение конвейера и цикла для копирования файлов d:\WINLAB>cd vasya

d:\WINLAB\vasya>dir /b every

mod vasya.list

d:\WINLAB\vasya>dir /b /s | find ".txt" > vasya.list

d:\WINLAB\vasya>dir /b every

mod vasya.list

d:\WINLAB\vasya>more vasya.list

103

d:\WINLAB\vasya\every\answer\vasya1.txt

d:\WINLAB\vasya\every\answer\vasya2.txt

d:\WINLAB\vasya\mod\moscow\vasya4.txt

d:\WINLAB\vasya\mod\yeah\vasya3.txt

d:\WINLAB\vasya>for /f %x in (vasya.list) do copy /y %x every\answer\

d:\WINLAB\vasya\every\answer\vasya1.txt

Невозможно скопировать файл поверх самого себя.

d:\WINLAB\vasya\every\answer\vasya2.txt

Невозможно скопировать файл поверх самого себя. d:\WINLAB\vasya\mod\moscow\vasya4.txt

Скопировано файлов:

1.

d:\WINLAB\vasya\mod\yeah\vasya3.txt

Скопировано файлов:

1.

d:\WINLAB\vasya>dir /b every\answer vasya1.txt

vasya2.txt

vasya3.txt

vasya4.txt

d:\WINLAB\vasya>

Команда FIND как фильтр текстовых строк в одном или нескольких файлах может применяться в формате:

FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] «строка» [путь]имя_файла

/V – вывод всех строк, не содержащих заданную строку.

/C – вывод общего числа строк, содержащих заданную строку. /N – вывод номеров отображаемых строк.

/OFF[LINE] – не пропускать атрибут «Автономный». /I – поиск без учета регистра символов.

Если путь не задан, то команда FIND выполняет поиск либо в тексте консоли, либо в тексте, переданном по конвейеру другой командой.

В предыдущем примере результаты фильтрации данных (список всех текстовых файлов директории VASYA) направлены в стандартный поток вывода – на экран, поэтому они носят чисто информативный характер. Для того чтобы использовать этот список в

104

практических целях, например для копирования всех файлов директории в один каталог, список должен находиться в файле. Имя такого файла произвольно – для определенности можно дать имя файлу VASYA.LIST (пример 2.29). Для анализа списка и выполнения операций с его элементами целесообразно использовать простые варианты специализированного цикла FOR в формате (где «переменная», обозначающая строку анализируемого одноэлементного списка, может иметь любое имя, например «X»):

FOR /F %переменная IN (файл) DO команда [параметры] FOR /F %переменная IN (‘команда’) DO команда [параметры]

Используя цикл FOR в формате обработки строк файлов, можно скопировать все текстовые файлы всех подкаталогов директории VASYA в один каталог (см. пример 2.29), а затем объединить текстовые файлы (пример 2.30), применяя перенаправление вывода в файл с добавлением данных: «>>».

Команда MORE активно используется для перенаправления стандартного ввода и построения конвейеров команд в нижеследующих форматах (подробное описание ключей см. п. 2.1.3):

MORE [/E [/C] [/P] [/S] [/Tn] [+n]] < [диск:][путь]имя_файла

имя_команды | MORE [/E [/C] [/P] [/S] [/Tn] [+n]]

Пример 2.30. Применение и цикла и перенаправления для создания файлов

d:\WINLAB\vasya\every\answer>for /f %x in ('dir /b') do more %x >> vasya.txt

ВЫДАЧА

d:\WINLAB\vasya\every\answer>more vasya1.txt 1>>vasya.txt d:\WINLAB\vasya\every\answer>more vasya2.txt 1>>vasya.txt d:\WINLAB\vasya\every\answer>more vasya3.txt 1>>vasya.txt d:\WINLAB\vasya\every\answer>more vasya4.txt 1>>vasya.txt

d:\WINLAB\vasya\every\answer>more < vasya.txt

На это каждый ответит, каждый ответит: -Конечно, Вася, Вася, Вася,

Нукто его не знает? Yeah, yeah! Вася, Вася, Вася - стиляга изМосквы.

d:\WINLAB\vasya\every\answer>

105

Источник: https://studfile.net/preview/16708824/