Команды манипулирования файлами

5.6.3. Команды манипулирования файлами

 Команда ERASE (DEL)

Назначение: удаление файлов.

Тип: внутренняя.

Синтаксис:

ERASE {pattern | dir)

или

DEL {pattern \ dir}

Комментарии. Если в командной строке задан pattern, то удаляются все сопоставимые с образцом файлы. В случае указания dir удаляются все содержащиеся в каталоге файлы, но не подкаталоги и не содержимое последних. Следовательно, dir здесь считается сокращением (си­нонимом) dir \*.*.

При указании на удаление всех файлов в каталоге (независимо от способа) на экране появится сообщение

All files in directory will be deleted!

Are you sure (Y/N)?

(Все файлы в каталоге будут удалены!

Вы уверены (Y—да/N—нет)?)

При утвердительном ответе (Y) выполнение команды продолжается, а при отрицательном (N) — отменяется.

Замечания:

— DOS не содержит средств восстановления удаленных файлов. Поэтому команду DEL следует использовать аккуратно. В частности, если в качестве ее аргумента предполагается задать дей­ствительно образец, а не файл, то целесообразно предварительно выдать команду DIR с тем же аргументом, чтобы просмотреть список файлов, которые будут удалены. Это позволит предотв­ратить попутное удаление файлов, которые должны быть сохранены;

— для удаления всех файлов в текущем каталоге диска в приводе d необходимо в качестве аргумента команды задать d:. (просто d: здесь не проходит);

— файлы с атрибутами R, Н и/или S командой ERASE не удаляются;

— технически при удалении файла изменяются только первый символ его имени в соответствующем элементе каталога и связанные с файлом элементы FAT, что обеспечивает возможность выделения элемента каталога и дискового пространства, прежде задействованных файлом, для размещения других файлов. Информация же, содержащаяся в файле, физически не стирается. Поэтому если файл занимал непрерывную область дискового пространства и после его удаления задействованная им ранее дисковая память еще не была выделена другому файлу, то имеется принципиальная возможность восстановления удаленного файла, которая и реализуется многими утилитами.

Примеры:

■ DEL A:*.PAS — удалить все файлы с расширением PAS из текущего каталога диска в приводе А;

■ DEL C:\DBASE — если C:\DBASE является каталогом, то удалить все содержащиеся в нем файлы (и оставить необработанными подкаталоги); иначе — удалить только файл C:\DBASE;

■ DEL . — удалить все файлы (но не каталоги) в рабочем каталоге.

DOS 4.0. Для повышения безопасности команды ERASE можно использовать переключатель /Р. При этом перед удалением каждого файла из заданного множества на экране дисплея появляется сообщение

file, Delete (Y/N)?

(Удалить file (Y—да/N—нет)?)

При ответе Y указанный файл будет удален; иначе же он останется в целости и сохранности. Выполнение команды продолжается при любом ответе, если еще есть необработанные файлы.

Команда RENAME (REN)

 

Назначение: переименование файлов.

Тип: внутренняя.

Синтаксис:

RENAME pattern сотрпате

или

REN pattern сотрпате

Комментарии. Множество переименовываемых файлов выделяется по образцу в pattern. Затем каждый файл из этого множества переименовывается таким образом, чтобы его новое составное имя было сопоставимо с образцом сompname и одновременно являлось наиболее близким к старому имени. Другими словами, вместо символов-заменителей в сompname подставляются соответствующие фрагменты старого имени файла. При этом если символ-заменитель ? находится на i-й позиции поля имени (расширения) в сompname, то вместо него подставляется i-й символ имени (расширения) переименовываемого файла. Когда поле имени (расширения) переимено­вываемого файла содержит менее i символов, символ-заменитель ? ничем не заменяется. Только что сказанное справедливо для всех команд манипулирования файлами.

Замечания:

— команда RENAME не изменяет размещения файлов, поэтому любая спецификация dir во втором аргументе игнорируется;      

— присваиваемое файлу новое имя не должно совпадать с именем уже существующего в том же каталоге файла, иначе команда не выполняется;

— файлы с атрибутами Н и/или S переименовать не удастся. Остальные атрибуты командой RENAME сохраняются в неизменном виде;

— командой RENAME невозможно переименовать каталог;

— символ-заменитель * удобно использовать во втором аргументе команды не только для задания множества составных имен файлов, но и для упрощения указания единственного со­ставного имени (см. примеры).

Примеры:

■ REN \*.ТХТ *.DOC — изменить расширение ТХТ на DOC у всех файлов в корневом каталоге текущего диска;

■ REN CURRENT.DAT *.OLD — изменить на OLD расширение файла CURRENT.DAT, содержащегося в рабочем каталоге;

■ REN CURRENT.DAT CURRENT.OLD - то же;

■ REN CURRENT.DAT 1986.* — изменить на 1986 имя файла CURRENT.DAT, оставив то же расширение;

■ REN 02.ТХТ 1?.* — переименовать файл 02.ТХТ в файл 12.ТХТ;

■ REN 2.TXT 1?.* — переименовать файл 2.ТХТ в файл 1.ТХТ.

Команда ATTRIB

 

Назначение: изменение и отображение атрибутов файлов.

Тип: внешняя.

Синтаксис:

ATTRIB [ + R|-R] [ + А|-А] pattern [/S]

Комментарии. Если в командной строке задан аргумент +х, то для всех файлов, сопоставленных с образцом в pattern, устанавливается атрибут х. В случае указания аргумента —х для выделенных по образцу в pattern файлов атрибут х сбрасывается. Если файл имеет атрибут х (не имеет атрибута х), то задание +х (—х) для этого файла никакого влияния на него не оказывает.

Указание в команде только pattern обеспечивает выдачу на экран текущих атрибутов выде­ленных файлов без их изменения.

Переключатель /S распространяет действие команды на подходящие под шаблон файлы в каталогах, подчиненных выделенному по pattern (конечно, в выделенном каталоге файлы также обрабатываются). Следовательно, /S задает обработку файлов в целом поддереве файловой структуры по одному и тому же критерию.

Замечания:

— атрибут А позволяет управлять командами BACKUP и XCOPY, обеспечивающими резервное копирование файлов;

— установка атрибута R затрудняет удаление и модификацию файла, что удобно делать для файлов, совместно используемых (разделенных) в сети, а также для файлов с ценной информацией;

— дополнительные сведения об атрибутах файлов содержатся в п. 5.2.2;

— команда ATTRIB не позволяет устанавливать и сбрасывать атрибуты Н и S, а также просматривать атрибуты таких файлов;_

— в качестве аргумента команды ATTRIB нельзя указывать спецификацию каталога (вместо этого используйте dir\*.*);

— последовательностью команд ATTRIB (устанавливая и сбрасывая определенный атрибут у разных подмножеств файлов с использованием образцов) можно быстро установить требуемые атрибуты тех или иных файлов;

— команду ATTRIB без атрибутов, но с переключателем /S, можно использовать для выдачи на экран всех файлов в файловой структуре или ее части, сопоставимых с заданным образцом.

Примеры:

■ ATTRIB +R C:\USER\XYZ.DAT — установить для указанного файла атрибут R;

■ ATTRIB -R +А *.ТХТ — установить атрибут А и сбросить атрибут R у всех файлов с расширением ТХТ в рабочем каталоге;

■ ATTRIB +А С:\*.* /S — установить атрибут А у всех файлов на диске в приводе С;

■ ATTRIB *.* — отобразить атрибуты всех файлов, содержащихся в рабочем каталоге;

■ ATTRIB +А С:\*.ТХТ /S — установить атрибут А у всех файлов с расширением ТХТ на диске в приводе С;

■ ATTRIB A:Pl.PAS — отобразить атрибуты файла PI.PAS, содержащегося в текущем каталоге диска в накопителе А;

■ ATTRIB +R C:\DOC\*.DOC /S — установить атрибут R у всех файлов с расширением DOC, содержащихся в поддереве файловой структуры диска в приводе С, корнем которого является каталог \DOC;

■ ATTRIB +А A:\V

ATTRIB —А A:\*.BAK — установить атрибут А у всех файлов в корневом каталоге диска в приводе А, за исключением тех файлов, которые снабжены расширением ВАК, а у последних атрибут А сбросить;

■ ATTRIB C:\*.UNI /S — отобразить атрибуты всех существующих на диске в приводе С файлов с расширением UNI (одновременно с этим выводятся и их спецификации, что позволяет найти все требуемые файлы).

Команда COMP

 

Назначение: сравнение содержимого файлов.

Тип: внешняя.

Синтаксис:

COMP [dirl \patternl] \dir2 \pattern2]

Комментарии. Аргументы в командной строке задают два множества файлов, содержимое которых будет попарно сравниваться.

После ввода команды по первому аргументу выделяется исходное множество файлов, а по второму — целевое. Затем содержимое каждого файла из исходного множества сравнивается с содержимым того файла из целевого множества, составное имя которого получается подстановкой в pattern2 вместо имеющихся в нем символов-заменителей соответствующих фрагментов состав­ного имени файла из исходного множества. Файлы из исходного множества выбираются в том порядке, в каком они зарегистрированы в каталоге. Команда COMP сообщает о том, содержимое каких файлов она в данный момент сравнивает. Результаты сравнения содержимого пар файлов также выводятся на экран дисплея. Сравнение файлов завершается по исчерпании исходного множества. Поэтому число элементов в целевом множестве может превышать количество эле­ментов в исходном множестве, но не наоборот.

Если в командной строке задан только один аргумент, то считается, что он является первым. Когда в командной строке указано менее двух аргументов (один или не одного), то команда выдаст запросы на ввод с клавиатуры недостающих спецификаций. Запрос на ввод первого аргумента выглядит следующим образом:

Enter primary filename

(Введите первичное имя файла)

Второй аргумент должен быть задан в ответ на запрос

Enter 2nd filename or drive id

(Введите второе имя файла или идентификатор привода)

Задание в качестве аргумента спецификации pattern приводит к тому, что для сравнения выбираются те файлы, составные имена которых сопоставимы с шаблоном. Аргумент dir считается сокращением для dir\*.*.

При сравнении содержимого каждой пары файлов команда COMP сначала проверяет равенство их длин. Если размеры файлов различны, то появляется сообщение

Files are different sizes

(Файлы различаются по размеру)

и сравнение не производится.

В ходе работы COMP содержимое файлов сравнивается побайтно, а при несовпадении байтов в файлах на экран выводится сообщение нижеприведенного вида:

Compare error at OFFSET xxxxxxxx

 (Ошибка сравнения при смещении xxxxxxxx)

FILE1 = уу

FILE2 = zz

Здесь х, у и z — шестнадцатеричные цифры, FTLE1 — ссылка на исходный,, a FILE2 — на целевой файл. Смещение указывает номер байтов от начала файлов, на которых обнаружено несовпадение (нумерация начинается с нуля). Для каждого файла сообщается содержимое несовпавшего байта (числа хх и уу).

Сравнение двух файлов на этом не завершается, но после десяти несовпадений оно все же прекращается с выдачей сообщения

10 Mismatches — ending compare

(10 несовпадений — завершение сравнения)

При полном совпадении содержимого двух файлов на экран выводится сообщение

Files compare OK

(Файлы сравнились успешно)

Если маркеры EOF в сравниваемых файлах не найдены, то командой в процессе работы будет выдано сообщение

EOF mark not found

(Маркер EOF не найден),

но это не ошибка, а возможная информация к размышлению, так как двоичные файлы и не должны иметь этих маркеров.

После успешного или неуспешного завершения сравнения очередной пары файлов из двух множеств команда COMP переходит к сравнению содержимого следующей пары.

По исчерпании исходного множества файлов появляется сообщение

Compare more files (Y/N)?

(Еще сравнивать файлы (Y—да/N—нет)?)

При ответе Y команда COMP предлагает Вам задать с клавиатуры два новых Множества для сравнения, и ее выполнение после ответов будет продолжено. В противном случае выполнение команды завершается.

Замечания:

— команда COMP сравнивает только содержимое файлов и не учитывает их физическое размещение на дисках;

— сравниваемые множества файлов могут содержаться в различных каталогах и на различных дисках;

— если по второму аргументу выделено пустое множество файлов, то выдается соответству­ющее сообщение. В случае, когда пустым является исходное множество, команда COMP просто запрашивает указание двух следующих пар множеств для сравнения;

— содержимое каталогов командой COMP не сравнивается;

— использование символа-заменителя * во втором аргументе позволяет не только задать множество файлов, но и упростить задание единственного файла;

— сравнение файла с самим собой обеспечивает проверку его считываем ости;

— для спецификации в качестве аргумента команды рабочего каталога удобно использовать точку,

— если требуется сравнить файлы на различных дискетах, а ПЭВМ не оборудована НЖМД, то следует запустить COMP с дискеты без указания, по крайней мере, второго аргумента Затек! после выдачи сообщения на ввод аргумента нужно заменить в приводах дискеты на требуемые и ответить на запрос.

Примеры:

■ COMP C:\DATA\P1.DAT A:\DATA\P2.DAT — сравнить содержимое указанных файлов;

■ COMP С:*ASM В:*.ВАК — сравнить файлы *ASM, содержащиеся в текущем каталоге диска в приводе С, с одноименными, но с расширением ВАК, файлами из текущего каталога диска в приводе В;

■ COMP С*ASM B:\PROGRAMS — сравнить файлы *ASM, содержащиеся в текущем каталоге диска в приводе С, с одноименными файлами из каталога \PROGRAMS диска в приводе В;

■ COMP С:*ASM *.ВАК — сравнить файлы *ASM из текущего каталога диска в приводе С с одноименными, но с расширением ВАК, файлами из рабочего каталога;

■ COMP — сравнить файлы, которые будут заданы в ответ на запросы команды;

■ COMP С:* ASM — сравнить файлы *ASM из текущего каталога диска в приводе С с файлами, которые будут заданы в ответ на запрос команды;

■ COMP С:\   А:\ — сравнить все файлы из корневого каталога диска в приводе С с одноименными файлами, содержащимися в корневом каталоге диска в приводе А;

■ COMP C:\DATA А: — сравнить все файлы из каталога \DATA диска в приводе С с одноименными файлами, содержащимися в текущем каталоге диска в приводе А;

■ COMP A:CURRENT.DAT В:*.ВАК — сравнить файл CURRENT.DAT из текущего каталога диска в приводе А с фалом CURRENT.BAK, содержащимся в текущем каталоге диска в приводе В;

■ COMP A:CURRENT.DAT В: — сравнить тот же файл с одноименным файлом, содержащимся в текущем каталоге диска в приводе В;

■ COMP . А: — сравнить все файлы из рабочего каталога с одноименными файлами, содержащимися в текущем каталоге диска в приводе А;

■ COMP *.* А: — то же.

Команда FC

 

Назначение: сравнение содержимого файлов и отображение различий между ними.

Тип: внешняя.

Синтаксис.

Для двоичного сравнения:

FC [/В] filel file!

Для текстового сравнения.

FC [/А] [/С] [/L] [/LBm] [/N] [/Т] [/W] [/n] filel file2

Комментарии. FC является усовершенствованной командой COMP. Последняя обеспечивает только побайтное, но не построчное сравнение содержимого файлов, причем сопоставление прекращается после десяти несовпадений. Команда же FC поддерживает режимы как двоичного (побайтного), так и текстового (построчного) сравнения.

При двоичном сравнении последовательно сопоставляется содержимое соответствующих байтов двух файлов и выдается список всех различий между ними, если они имеются (проверка файлов производится до конца, независимо от числа несовпадений). Сравнивать таким способом можно как двоичные, так и текстовые файлы.

При текстовом сравнении содержимое двух файлов сравнивается построчно, а внутри соот­ветствующих строк — побайтно (посимвольно). В случае нахождения первого различия в соот­ветствующих строках их сравнение прекращается. Затем утилита FC постарается найти в файлах такие места (точнее — строки), начиная с которых, они снова становятся одинаковыми. В результате этого определяются и выдаются на экран дисплея различающиеся в двух файлах фрагменты текста (последовательности строк). При удачном совмещении содержимого файлов после таких фрагментов сравнение продолжается. В противном случае выдается соответствующее этой ситуации сообщение и сравнение файлов завершается. Режим текстового сравнения целе­сообразно применять только для сравнения текстовых файлов.

В командной строке filel и file2 задают два файла, содержимое которых подлежит сравнению.

Результаты выполнения команды FC выводятся в форме, несколько отличающейся от COMP.

Переключатели в командной строке имеют следующий смысл:

/А — сократить (Abbreviate) объем выдачи при текстовом сравнении: вместо вывода не­совпадающих фрагментов целиком выдавать только их первые и последние строки;

/В — установить режим двоичного (Binary) сравнения файлов (принимается по умолчанию для файлов с расширениями EXE, COM, SYS, OBJ, LIB и BIN);

/С — игнорировать при текстовом сравнении различие в кодировке одноименных строчных и прописных букв (Case), рассматривая все буквы как прописные;

/L — установить режим текстового (Line — построчного) сравнения содержимого файлов (принимается по умолчанию для файлов, расширением имен которых не является EXE, COM, SYS, OBJ, LIB или BIN);

/LBm — установить размер внутреннего буфера (Line Buffer), достаточный для хранения за­данного посредством т числа строк (по умолчанию т = 100);

/N — отображать при текстовом сравнении не только сами различающиеся строки, но и их номера (Number);

/Т — не расширять символы табуляции (TAB) при текстовом сравнении в соответствующее число пробелов, которые приводят к размещению следующего символа в очередной позиции табуляции. По умолчанию такое преобразование файлов производится, что обеспечивает совпадение содержимого файлов, различающихся только по данному параметру (в одном файле все пробелы присутствуют явно, а в другом — заменены символами TAB);

/W — при текстовом сравнении сжимать «чистые» пробелы (White spaces — последователь­ности символов TAB и SP) в единственный пробел внутри каждой строки (между словами) и игнорировать их в начале, а также в конце строки. Указание этого переключателя (как и предыдущего) позволяет не принимать во внимание несущест­венные различия в сравниваемых текстовых файлах;

/n — задать посредством п число подряд совпавших строк при текстовом сравнении, чтобы считалось, что содержимое файлов снова согласовано (различающиеся фрагменты вы­делены и пройдены). Если совпало подряд после обнаружения расхождений меньшее количество строк, то они помещаются в различающиеся фрагменты текста и согласование содержимого файлов продолжается. По умолчанию в качестве п принимается число 2.

В случае двоичного сравнения отчет о различиях содержимого двух файлов выдается на экран в виде последовательности строк с тремя шестнадцатеричными числами следующего вида:

хххххххх: уу zz ,

где    хххххххх     — порядковый номер несовпавших байтов (начиная с нуля, т.е. смещение относительно начала файла);

          уу — содержимое несовпавшего байта первого файла;

          zz — содержимое несовпавшего байта второго файла.

В режиме текстового сравнения несовпадающие фрагменты файлов выводятся на экран в следующем виде:

***** filel

Последняя совпадающая строка

Отличающийся фрагмент первого файла

Первая вновь совпадающая строка

.....file2

Последняя совпадающая строка

Отличающийся фрагмент второго файла

Первая вновь совпадающая строка

Здесь fuel и file2 — спецификации сравниваемых файлов. Отметим, что первая вновь совпадающая строка соответствует началу согласованных участков файлов.

Как уже подчеркивалось, при двоичном сравнении выводится информация о всех различиях. На это никак не влияют размеры файлов.

В режиме же текстового сравнения при обнаружении несоответствий необходимо осуществить просмотр файлов вперед с сохранением различающихся фрагментов. На возможность этого непосредственное влияние оказывает размер внутреннего буфера, задаваемый переключателем /LBm. В случае, когда буфер уже заполнен, а файлы еще не согласованы, выдается сообщение

Resync failed. Files are too different

 (Повторная синхронизация не удалась. Файлы слишком различны)

и сравнение содержимого пары файлов прекращается. В этом случае можно увеличить размер буфера и повторить сравнение.

Если сравниваемые файлы имеют различные длины, то при достижении конца одного из них на экране появляется сообщение вида

fc: filel longer than file2

(filel длиннее, чем flle2)

В случае, когда содержимое сравниваемых файлов (с учетом установленных переключателями послаблений) полностью совпадает, выдается сообщение

fc: no differences encountered

(различий не обнаружено)

Замечания:

— команда FC в PC DOS 3.3 отсутствует;

— указание в командной строке шаблонов и каталогов недопустимо;

            — при задании двух файлов с различными расширениями режим сравнения в общем случае следует специфицировать явно;

— допускается осуществлять сравнение содержимого файла с тем, что будет введено пользова­телем с клавиатуры, что достигается указанием в качестве одного из аргументов устройства CON;

— переключатель /С не обеспечивает игнорирование различий одноименных прописных и строчных букв кириллицы;

— переключатели не обязательно должны присутствовать только в начале командной строки;

— справедливы многие замечания, сделанные для команды COMP;

— команда FC может полностью заменить команду COMP, так как не обеспечивает сравнение содержимого множеств файлов.

Примеры:

■ FC /А MONTHLY.RPT SALES.RPT — сравнить содержимое заданных файлов в текстовом режиме с выдачей сокращенного отчета;

■ FC /LB500 /4 /L /W MYFILE.TXT YOURFILE.TXT — сравнить содержимое заданных файлов в текстовом режиме, причем размер буфера установить размером в 500 строк и считать файлы вновь согласованными при идентичности четырех строк подряд, а различия в количестве промежутков между словами во внимание не принимать.

Команда COPY

 

Назначение: копирование и сцепление (конкатенация) файлов.

Тип: внутренняя.

Синтаксис.

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

COPY {dirl\patternl} [/V][/A|/B] [dir2\pattern2] [/V)[/A|/B]

Для конкатенации файлов:

COPY        {patternl\dirl} [/V]    [/A| /B]

                        {pattern2 | dir2   [/V] [/A| /B]]...

                          [paiternN | dirN]   [/V]    [/A| /B]

Комментарии. Очевидно, формат команды для копирования файлов является частным случаем формата для конкатенации файлов. Тем не менее мы умышленно (с целью упрощения изложения) не воспользовались имеющейся возможностью объединения двух форматов в один. Сначала рассмотрим порядок копирования, а затем — организацию конкатенации файлов. В заключение обсудим действие переключателей.

В синтаксисе для копирования файлов первый аргумент определяет, какие файлы-оригиналы подлежат дублированию, и поэтому называется исходным, а второй — место размещения и составные имена будущих файлов-дубликатов, в связи с чем называется целевым.

Как и в некоторых других командах, задание в качестве аргумента спецификации dir экви­валентно указанию dir\*.*.

Копированию подлежат те файлы из выделенного по исходному аргументу каталога, составные имена которых сопоставляются с шаблоном. Порядок копирования файлов определяется после­довательностью их вхождения в исходный каталог. Каждому дубликату присваивается составное имя, полученное путем замещения символов-заменителей в целевом аргументе соответствующими фрагментами составного имени файла-оригинала. Если целевой аргумент не задан, то копирование осуществляется в рабочий каталог.

Копирование файла «на себя» не допускается. При задании такого режима выполнения команды COPY на экран выводится сообщение

File cannot be copied onto itself

0 File(s) copied

(Файл не может быть скопирован на себя.

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

и копирование не производится.

При дублировании файла дата и время его создания (последней модификации) не изменяются.

Режим конкатенации файлов используется для объединения их содержимого в единый файл (или в несколько файлов). Это полезно главным образом для текстовых файлов, когда из их последовательности формируется единый документ. Данный режим можно использовать и для добавления фрагментов текста в конец существующего файла.

В режиме конкатенации множества сцепляемых файлов задаются в командной строке спе­цификациями образцов файлов (pattern) и/или спецификациями каталогов (dir), между которыми ставится символ +, возможно, ограниченный слева и справа последовательностями пробелов. Последний аргумент, которому не предшествует + , определяет местоположение и составные имена файлов, которые будут содержать результаты конкатенации. Таким образом, в режиме конкатенации может быть несколько исходных аргументов (но не менее одного) и только один — целевой. В случае задания только одного исходного аргумента один из возможных режимов (копирования или конкатенации) выбирается в соответствии с видом аргументов и это неодно­значности не вызывает. Как и в режиме копирования, в режиме конкатенации dir является сокращением для dir\*.*. Файлы, выделенные по исходным аргументам, будем называть исходными, а сформированные по целевому аргументу — результирующими.

Существует несколько вариантов реализации конкатенации в зависимости от того, какие аргументы и каким образом определены. В связи с этим рассмотрим три случая:

1) все исходные аргументы и целевой аргумент заданы шаблонами (или шаблоны подразумеваются);

2) по крайней мере, одним из исходных аргументов задан единственный файл, а целевой аргумент является шаблоном (или шаблон подразумевается);

3) в качестве целевого аргумента указан единственный файл.

В первом случае выполнение команды COPY сводится в определенном смысле к реализации последовательности «подкоманд» COPY. Аргументы каждой такой «подкоманды» аналогичны аргументам исходной команды, но конкретизированы вплоть до указания на единственные файлы. Конкретизация аргументов в командной строке команды COPY производится по элементам множества составных имен файлов, определяемого первым исходным аргументом. По составному имени каждого файла из этого множества осуществляется уточнение других аргументов путем подстановки вместо символов-заменителей в них соответствующих фрагментов этого составного имени. Описанный процесс, а следовательно, порядок «подкоманд» COPY, определяется порядком вхождения в каталог файлов, выделенных по первому исходному аргументу. Но это в данном случае на конечный результат выполнения команды COPY влияния не оказывает (не имеет значения, в какой последовательности формируются результирующие файлы).

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

В третьем случае содержимое исходных файлов последовательно сцепляется, а результат помещается в результирующий файл. Порядок конкатенации файлов определяется порядком задания исходных аргументов и вхождения исходных файлов в каталог. Сначала объединяются файлы, выделенные по первому исходному аргументу в порядке их вхождения в соответствующий каталог, затем — файлы, выделенные по второму исходному аргументу в том же порядке и т.д.

Когда целевой аргумент отсутствует, вместо него используется первый исходный аргумент. Никаких ошибок в этом случае не возникает, а выполнение команды COPY сводится к присо­единению к выделенным по первому исходному аргументу (уже существующим) файлам содер­жимого файлов, заданных остальными исходными аргументами. С учетом сделанных замечаний для данного варианта применим один из трех рассмотренных выше случаев. Такой способ задания командной строки является аббревиатурой (сокращением) для указания в качестве целевого первого исходного аргумента (т.е. когда первый исходный и целевой аргументы совпадают). Так,

COPY fllel+file2 filel

эквивалентно

COPY filel+file2

Однако если спецификации некоторых результирующих файлов (заданных явно или неявно первым аргументом) совпадают со спецификациями исходных файлов, выделенных не по первому аргументу, то для каждой такой пары выдается сообщение

Content of destination lost before copy

(Содержимое адресата (результирующего файла) потеряно до* копирования)

Оно говорит о том, что файл открыт для записи (создан заново) и поэтому нет возможности прочитать его старое содержимое для повторной записи. Выполнение команды COPY в таких случаях не прекращается, но содержимое каждого такого исходного файла в результирующий файл не переносится (тем самым теряется его первоначальное содержимое). Следовательно, обработка исходного и результирующего файлов с одинаковыми именами в «подкоманде» COPY осуществляется не всегда корректно.

Если один и тот же файл выступает в роли первого и целевого (пусть даже неявно заданного) аргумента, а также сопоставим с каким-либо еще аргументом, то приведенное выше сообщение о потере содержимого адресата выдается, но реально содержимое адресата не теряется. В этом случае просто игнорируется использование данного файла в роли непервого аргумента. Объяснение указанного факта состоит в том, что файл здесь открывается не для записи, а для добавления в конец. Описанная ситуация потенциально опасна, и ее лучше избегать.

Для файлов, создаваемых или обновляемых в режиме конкатенации, устанавливаются текущие дата и время создания (в то время как в режиме копирования эти характеристики файлов не изменяются).

При определении режима работы команды COPY в случае, когда задан единственный исходный аргумент, действует следующее правило: если в качестве целевого аргумента специфицирован единственный файл, а исходный аргумент указывает на множество файлов, то включается режим конкатенации; в противном случае выбирается режим копирования, который, очевидно, является частным случаем первого.

Выполняемые командой действия отображаются на экране дисплея путем выдачи составных имен обрабатываемых файлов.

После завершения копирования или конкатенации файлов на экране дисплея отображается сообщение

n File(s) copied

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

где п — число созданных файлов.

В командной строке можно использовать следующие переключатели, определяющие допол­нительные режимы выполнения команды COPY и уточняющие ее действие:

/V — контролировать правильность записи информации на диск путем проверки считываемости;

 /А — осуществлять копирование (конкатенацию) в текстовом режиме;

 /В — осуществлять копирование (конкатенацию) в двоичном режиме.

Переключатель /V независимо от того места, где он указан в команде, действует на всю командную строку (поэтому достаточно задать его один раз). Переключатель /А (/В) действует на предшествующий и все последующие аргументы до начала области действия переключателя /В (/А). Эти два переключателя несовместимы (конечно, для одного и того же, а не для разных аргументов команды).

Длина текстовых и двоичных файлов современными версиями DOS фиксируется по-разному. Для первых длина, указанная в соответствующем элементе каталога, определяющего значения не имеет (фактический размер файла может быть выяснен только путем последовательного чтения его содержимого до маркера EOF). Этого оказывается достаточным, так как прямой доступ к текстовым файлам неприменим. Обычно (но не всегда) реальная длина текстового файла (включая маркер EOF) все же совпадает со значением, указанным в элементе каталога. Однако проверить это в каждом конкретном случае можно только путем считывания содержимого файла. Несовпадение зарегистрированной и реальной длин возникает, в частности, при пользовании текстовыми редакторами, которые для ускорения работы осуществляют не посимвольную, а поблочную запись документа в файл. В результате реальная длина может оказаться меньше зарегистрированной, если последний блок неполон. Длина же двоичного файла определяется только по значению, указанному в элементе каталога. Необходимость такого подхода объясняется возможностью прямого доступа к содержимому двоичного файла, вследствие чего до начала чтения файла должна быть известна его длина. Наличие маркера EOF в конце двоичного файла не является обязательным.

Переключатели /А и /В как раз и задают условие окончания считывания файлов-оригиналов (исходных файлов) и правила оформления файлов-дубликатов (результирующих файлов).

При применении к файлам-оригиналам (исходным файлам) переключатели имеют следующий смысл:

/А — данные из файла копируются (считываются) вплоть до первого маркера EOF, но не включая его. Остаток файла не копируется (не считывается). При отсутствии маркера EOF или если файл имеет большую длину, чем указано в каталоге, команда COPY руководствуется сведениями о длине из соответствующего файлу элемента каталога;

/В — файл копируется (считывается) полностью в соответствии со значением в поле длины файла из элемента каталога.

Для файлов-дубликатов (результирующих файлов) эти переключатели интерпретируются так:

/А — после записи на диск дубликата (результирующего файла) в качестве последнего добавить маркер EOF;

/В — после записи файла на диск маркер EOF не добавлять.

Таким образом, переключатель /А используется главным образом для обработки текстовых, а /В — двоичных файлов.

Независимо от сочетания переключателей в командной строке и установленного режима работы команды COPY в элементы каталогов, описывающие файлы-дубликаты (результирующие файлы), заносятся реальные длины созданных файлов, т.е. количество записанных байтов, включая маркер EOF, если он в файл помещается.

По умолчанию в режиме копирования действует переключатель /В, а в режиме конкатенации файлов — переключатель /А. Последнее объясняется тем, что сцеплять имеет смысл только текстовые файлы.

Замечания:

— команда COPY является одной из наиболее часто используемых и наименее познанных команд DOS;

— как это ни парадоксально, но тем не менее сокращение d: для d:. в качестве исходного (но не целевого) аргумента в команде COPY не допускается;

— наряду с копированием файлов она поддерживает и их одновременное переименование;

— все заданные в режиме копирования исходными аргументами файлы реально дублируются, а не повторно регистрируются в других каталогах (пусть даже на том же диске);

— при копировании (конкатенации) файлов оригиналы (исходные файлы) сохраняются без каких-либо изменений, если не используется вариант конкатенации файлов с добавлением данных в конец существующего файла;

— команда COPY является потенциально опасной командой: если при копировании файлов или их конкатенации (за исключением добавления данных в конец файла) в качестве дубликата (результирующего файла) указан уже существующий файл, то он перезаписывается без всякого предупреждающего сообщения; однако файлы с атрибутом R не замещаются;

— файлы с атрибутами Н и/ или S командой COPY не обрабатываются; атрибут R в файлы-дубликаты (результирующие файлы) из файлов-оригиналов (исходных файлов) не переносится; для файлов, созданных по целевому аргументу, всегда устанавливается атрибут А;

— первый аргумент в команде COPY должен быть всегда задан (по крайней мере, точкой);

— символ-заменитель * может использоваться не только для задания множества файлов, но и для упрощения задания единственного файла в качестве целевого аргумента в режиме копирования;

— нецелесообразно пользоваться переключателем /V часто, так как информация записывается на диск, как правило, без ошибок. Однако его следует указывать при обработке файлов с важной информацией, а также при записи на «сбойные» дискеты. Задание переключателя /V увеличивает время выполнения команды COPY. Альтернативным средством верификации записи информации на диски является команда VERIFY, действующая в отличие от переключателя /V на /все последующие операции записи на диск до отмены режима контроля этой же командой (пере­ключатель же /V действует только в рамках выполнения данной команды);

— переключатель /А (/В) может указываться и перед первым аргументом команды; тогда его действие распространяется на все последующие исходные аргументы до качала области действия переключателя /В (/А) и на целевой аргумент, причем его воздействие на последний ничем не отменяется;

— копирование текстовых файлов в текстовом режиме обеспечит приведение зарегистриро­ванных длин файлов в соответствие с реальными;

— копирование файлов на диск, содержимое которого не фрагментировано (в частности, на полностью пустой диск) позволяет реализовать их дефрагментацию;

— при попытке дублирования файлов с защищенных от перезаписи дискет операция копи­рования может внешне завершиться успешно, но на самом деле некоторые файлы могут быть скопированы не полностью;

— в команде COPY в качестве спецификаций файлов допускается и даже часто целесообразно задавать имена посимвольных устройств, чтобы записать текстовый файл с устройства ввода или вывести его на устройство вывода;

— переключатель /V при копировании на посимвольное устройство отвергается;

— в режиме копирования символы ТАВ в последовательности пробелов не разворачиваются. По этой причине команду COPY не всегда целесообразно использовать для вывода текстов на посимвольные устройства. Лучше для этих целей применять команды TYPE и PRINT;

— команда COPY не обеспечивает копирования поддерева файловой структуры. Для реализации этого служит команда XCOPY.

Примеры:

■ COPY A: \MYFILE.DAT В:М YFILE.BAK — скопировать файл MYFILE.DAT из корневого каталога диска в приводе А в текущий каталог диска в приводе В и присвоить дубликату имя MYFILE.BAK;

■ COPY A:\MYFILE.DAT В:*.ВАК - то же;

■ COPY A:\MYFILEJDAT — скопировать указанный файл в рабочий каталог (без переименования);

■ COPY MYFILE.DAT В: — скопировать указанный файл из рабочего каталога в текущий каталог диска в накопителе В;

■ COPY MYFILE.DAT B:\DATA — скопировать указанный файл из рабочего каталога в каталог \DATA диска в приводе В;

■ COPY A:*.BAS С: — скопировать все файлы с расширением BAS из текущего каталога диска в приводе А в текущий каталог диска в приводе С;

■ COPY A:*.BAS С:*.ВАК.— то же, но у дубликатов меняется расширение с BAS на ВАК;

■ COPY А: . В: — скопировать все файлы из текущего каталога диска в приводе А в текущий каталог диска в приводе В;

■ COPY А:. В:*.ВАК — то же, но расширение имен файлов заменить на ВАК;

■ COPY . B:UTILS — скопировать все файлы из рабочего каталога в каталог UTILS, содержащийся в текущем каталоге диска в приводе В;

COPY MAIN.PAS + P1.PAS + P2.PAS MYPROG.PAS - сцепить в указанном порядке содер­жимое файлов MAIN.PAS, P1.PAS и P2.PAS с записью результата в файл MYPROG.PAS (все файлы обрабатываются в рабочем каталоге);

■ COPY *.ТХТ+ *.REF *.DOC — сцепить каждый файл с расширением ТХТ с одноименным файлом, но имеющим расширение REF, и записать результат в файл с тем же именем и расширением DOC (все файлы обрабатываются в рабочем каталоге);

■ COPY *.ТХТ +R.REF *.DOC — найти в рабочем каталоге первый ТХТ-файл, присоединить к нему содержимое файла R.REF и поместить результат в файл с тем же именем, что и ТХТ-файл, но с расширением DOC;

■ COPY R.TXT + *.REF *.DOC — присоединить к файлу R.TXT содержимое всех REF-файлов из рабочего каталога и поместить результат в файл R.DOC;

■ COPY *.ТХТ COMBIN.DOC — объединить все файлы с расширением ТХТ в единый файл COMBIN.DOC; очередность обработки исходных файлов зависит от порядка их вхождения в рабочий каталог,

■ COPY *.TXT+R.REF COMBIN.DOC — то же, но в конец файла COMBIN.DOC дополнительно записывается содержимое файла R.REF;

■ COPY *.TXT+*.REF COMBIN.DOC — сцепить последовательно все файлы с расширением ТХТ, присоединить к ним содержимое всех файлов с расширением REF и поместить результат в файл COMBIN.DOC; порядок выбора ТХТ- И REF-файлов зависит От по­следовательности их вхождения в рабочий каталог,

■ COPY А:. + В:. С: — сцепить попарно все файлы из текущего каталога диска в приводе А с одноименными файлами из текущего каталога диска в приводе В и поместить результаты в текущий каталог диска в приводе С под теми же именами;

■ COPY *.ТХТ ALL.TXT — сцепить содержимое всех файлов с расширением ТХТ и записать результат в файл ALL.TXT; если файл ALL.TXT существовал, то его первоначальное содержимое будет потеряно и не скопируется в новую версию файла;

■ COPY ALL.TXT+ *.ТХТ — то же, но результат конкатенации будет содержать в префиксе первоначальное содержимое файла ALL.TXT, хотя и выдается сообщение о потере содержимого результирующего файла;

■ COPY ALL.TXT+ *.ТХТ ALL.TXT - то же;

■ COPY MEMO.DOC /А LETTER.DOC — скопировать содержимое файла MEMO.DOC в файл LETTER.DOC в текстовом режиме (/А действует на оба аргумента);

■ COPY F1.TXT /А F2.TXT /В — скопировать содержимое файла F1.TXT в файл F2.TXT с отсечением маркера EOF, если он в первом файле имеется;

■ COPY F1.TXT /А F2.TXT — скопировать содержимое файла F1.TXT в файл F2.TXT с тем, чтобы зарегистрированную длину файла привести в соответствие с реальной;

■ COPY MYFILE.TXT CON — отобразить содержимое файла MYFILE.TXT на экране дисплея;

■ COPY MYFILE.TXT PRN — распечатать содержимое файла MYFILE.TXT на принтере;

■ COPY CON AUTOEXEC.BAT — создать файл AUTOEXEC.BAT и записать в него текст, заданный с клавиатуры (ввод текста завершается нажатием клавиши F6, а вслед за ней — Enter);

■ COPY AUTOEXEC.BAT + CON — дополнить файл AUTOEXEC.BAT информацией, введенной с клавиатуры;

■ COPY MYFILE.TXT/В + NUL/A MYFILE.TXT/В — изменить дату и время создания файла MYPROG.TXT на текущие;

■ COPY /В MYFILE.TXT+NUL/A MYFILE.TXT - то же;

■ COPY MYFILE.TXT /В + „ - то же;

■ COPY CON PRN — скопировать ввод с клавиатуры непосредственно на принтер (печать будет осуществлена вслед за вводом с клавиатуры маркера EOF, а в остальном будет полностью имитироваться пишущая машинка).

Команда XCOPY

 

Назначение: копирование файлов и подкаталогов.

Тип: внешняя.

Синтаксис:

XCOPY {dirl | patternl} [dir2 | pattern2] [/A] [/D:date] [/E[/M][/P][/S][/V][/W]

Комментарии. Данная команда (ее имя — аббревиатура от eXtended COPY) является расши­ренным вариантом команды COPY в режиме копирования и дополнительно обеспечивает

1) выделение подлежащих копированию файлов не только по образцу составного имени файла, но и по другим критериям;

2) копирование поддеревьев файловой структуры.

Кроме того, XCOPY использует для своей работы всю свободную оперативную память и поэтому работает гораздо быстрее.

Если в командной строке задан один аргумент, то он является исходным и определяет подлежащие копированию файлы (файлы-оригиналы), а дубликаты в этом случае будут размещаться в рабочем каталоге.

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

Если в качестве аргумента указан каталог dir, а не pattern, то предполагается спецификация dir\*.* (все файлы в каталоге).

Копированию подлежат те файлы в выделенном по исходному аргументу каталоге, составные имена которых сопоставляются с заданным образцом. Каждый дубликат при этом размещается в выделенном по целевому аргументу каталоге и ему присваивается составное имя, полученное путем подстановки вместо символов-заменителей целевого аргумента соответствующих фрагмен­тов составного имени файла-оригинала. В частном случае (если в целевом аргументе указано или предполагается *.*) имена файлов сохраняются.

Таким образом, правила задания аргументов здесь аналогичны команде COPY.

В связи с тем, что XCOPY (как мы увидим ниже) в отличие от команды COPY Может создавать каталоги, она не всегда в состоянии однозначно интерпретировать свои аргументы. В таких случаях пользователю выдается запрос. Например, при задании в качестве целевого аргумента спецификации без символов-заменителей не всегда можно определить, что же в конечном счете требуется пользователю: поместить дубликат в указанный файл (естественно, создав его) или рассматривать эту спецификацию как каталог, в который требуется скопировать файл. Команда XCOPY принимает в данной ситуации однозначное решение, если целевой аргумент указывает на существующий каталог (файл копируется в него с сохранением имени). В противном же случае выдается сообщение

Does string specify a file name

or directory name on the target

(F=fiie D = directory)?

(Задает ли string в (целевом аргументе) имя файла

или имя каталога

(F= файл D = каталог)?)

Пользователю следует ответить F или D по своему усмотрению. При ответе D создается новый каталог, и в нем будет размещен дубликат. В случае ответа F осуществляется копирование файла с переименованием.

Факультативные переключатели в команде XCOPY имеют следующий смысл:

/А — копировать из выделенных по шаблону только те файлы, которые имеют атрибут

А. При этом атрибуты файлов-оригиналов не модифицируются. Переключатель /А несовместим с /М;

/М — то же, но после копирования атрибут А у оригиналов сбрасывается. Этот переклю-

чатель несовместим с /А;

/D:date — копировать из выделенных по шаблону только созданные не раньше указанной даты (date) файлы. Для получения дополнительной информации см. описание команды DATE в этом же пункте;

/S —копировать не только заданные исходным аргументом файлы, но и файлы во всех

подчиненных выделенному по pattern каталогах с учетом ограничений, накладываемых шаблоном и переключателями. При этом структура поддеревьев воспроизводится полностью, за исключением пустых каталогов (последние отбрасываются);

/Е — копировать и пустые подкаталоги. Этот переключатель используется только совместно с /S;

/Р — запрашивать у пользователя подтверждение на копирование каждого выделенного

файла (Y/N);

/V — контролировать правильность записи информации на диск путем проверки считываемости;

/W — сделать в начале выполнения команды паузу с выдачей сообщения «Press any key when ready to start copying files* («Нажмите любую клавишу при готовности начать копирование файлов»). Пользователь может поступить в соответствии с предписанием для продолжения выполнения команды или нажать комбинацию клавиш Ctrl-Break для ее завершения.

Переключатель /D совместим с переключателем /А (/М), и оба они действуют в качестве дополнительного ограничителя множества файлов-оригиналов.

Сообщения, выдаваемые на экран в процессе выполнения XCOPY, аналогичны сообщениям, отображаемым командой COPY.

Команда XCOPY генерирует следующие коды возврата:

0 — копирование прошло без ошибок;

1 — для копирования не найдено ни одного файла;

2 — выполнение команды принудительно завершено пользователем путем нажатия комбинации клавиш Ctrl-Break;

4 — ошибка инициализации (недостаточно внешней памяти для выполнения команды, неправильный синтаксис команды или заданы аргументы, не соответствующие реальной фай­ловой структуре и конфигурации оборудования);

5 — критическая ошибка ввода-вывода, на которую пользователь прореагировал ответом А.

Замечания. Было бы неправильным считать, что при наличии утилиты XCOPY использование команды COPY нецелесообразно. Дело в том, что последняя все же имеет следующие преимущества:

— является внутренней, а поэтому запускается быстрее и пользоваться ею более удобно;

— команда COPY допускает использование имен последовательных устройств вместо специ­фикаций файлов, a XCOPY — нет;

— команда COPY обеспечивает конкатенацию файлов, a XCOPY — нет,

— командой COPY в отличие от XCOPY обеспечивается возможность явного задания текстового или двоичного режима копирования файлов (XCOPY поддерживает только двоичное копирование).

Преимущества команды XCOPY были перечислены выше.

В отношении XCOPY можно сделать следующие замечания, аналогичные, но не полностью совпадающие с указанными для команды COPY:

— файлы-оригиналы и каталоги-оригиналы сохраняются без каких-либо изменений;

— при копировании в существующие файлы, не имеющие атрибута R, они заменяются заданными в команде оригиналами (т.е. уничтожаются и создаются заново); если же атрибут R установлен, то выдается сообщение «Access denied* («Доступ отвергнут») и копирование не производится. Копирование же поддерева файловой структуры сопровождается не заменой, а пополнением содержимого каталогов, возможно, уже существующего поддерева, на которое указывает целевой аргумент. В данном случае никакой подкаталог не заменяет даже одинаково размещенный и так же поименованный каталог. Вместо этого копируются только файлы и добавляются соответствующие им элементы подкаталогов. Отсутствующие каталоги, конечно, создаются. Такая техника позволяет сохранить уже созданное поддерево каталогов и содержащиеся в нем файлы, если при дублировании не возникает коллизий составных имен файлов;

— файлы с атрибутами Н и/или S командой XCOPY не обрабатываются, а при копировании файлов с атрибутом R последний не переносится. Для файлов-дубликатов всегда устанавливается атрибут А;

— дата и время создания файлов при копировании не изменяются;

— рабочий каталог в исходном аргументе удобно задавать точкой;

— символ-заменитель * может использоваться не только для задания множества файлов, но и для упрощения задания единственного файла в качестве целевого аргумента;

— задание переключателя /V замедляет выполнение команды, но придает уверенность при дублировании ценной информации. Альтернативой переключателя /V является команда VERIFY, которая включает и выключает контроль записи на диск для всех последующих операций;

— команда XCOPY в случае подходящего (нефрагментированного) размещения информации на целевом диске обеспечивает дефрагментацию файлов;

— дублирование файлов с защищенных от копирования дискет к успеху не приводит (как, впрочем, и выполнение команды DISKCOPY, а также COPY);

— символы TAB в последовательности пробелов не разворачиваются;

— все заданные исходными аргументами файлы реально дублируются, а не повторно реги­стрируются в других каталогах (пусть даже на том же диске).

Кроме того:

— следует четко представлять себе, что в качестве исходного аргумента команды XCOPY семан­тически указывается не каталог, находящийся в корне копируемого поддерева файловой структуры, а содержащиеся в каталоге элементы и компоненты файловой структуры, подлежащие копированию;

— использование переключателя /W облегчит выполнение копирования информации с дискеты на дискету при наличии в ПЭВМ только двух НГМД и отсутствии НЖМД. Для этого надо запустить утилиту XCOPY с дискеты, а перед ответом на сообщение по /W заменить дискеты на требуемые для дублирования;

— циклическое копирование выполнять запрещается (каталог, в который осуществляется копирование, не должен входить в копируемое поддерево файловой структуры);

— команду XCЦPY следует использовать вместо DISKCOPY при копировании всего содер­жимого одной дискеты на другую, имеющую иной формат,

— для устранения неоднозначности целесообразно в качестве аргументов команды XCOPY по возможности не использовать dir, а задавать только pattern, в частности, dir\*.*\;

— сокращение d: для d\. допускается в качестве любого аргумента в командной строке;

— команда XCOPY с переключателями /S и /М является функциональным аналогом команды резервирования BACKUP и имеет следующие особенности: работает быстрее, чем BACKUP; файлы могут быть восстановлены этой, же командой или командой COPY, но не RESTORE; не позволяет резервировать файлы, размер которых превышает емкость дискеты; не разрушает файловую структуру целевого диска; при необходимости зарезервировать все файлы требует предварительного выполнения команды ATTRIB с переключателем /S, чтобы затем использовать в командной строке переключатель /М (без него XCOPY не позволит продублировать файлы, суммарный размер которых превышает емкость дискеты, без явного удаления уже зарезервированных).

Примеры:

■ XCOPY *.DAT В: — скопировать все файлы с расширением DAT из рабочего каталога в текущий каталог диска в приводе В; к

■ XCOPY А: — скопировать все файлы из текущего каталога диска в накопителе А в рабочий каталог,

■ XCOPY *.BAS *.ВАК — скопировать все файлы с расширением BAS из рабочего каталога в тот же каталог с одновременным изменением расширений на ВАК;

■ XCOPY *.* А:\ — скопировать все файлы из рабочего каталога в корневой каталог диска в приводе А;

■ XCOPY А:\ В:\ /S/Е — скопировать содержимое диска в приводе А на диск в приводе В.

Если последний пуст, а первый не содержит файлов с атрибутами Н и S, то диск в приводе В станет логической копией диска в приводе А. В противном случае файловая структура целевого диска пополнится файловой структурой исходного, если не принимать во внимание скрытые и системные файлы;

■ XCOPY C:\*.DAT А:\ /S — скопировать все файлы с расширением DAT с диска в приводе С на диск в приводе А с сохранением их размещения в файловой структуре;

■ XCOPY С:\  А:\ /S/М — скопировать все файлы, которые были модифицированы или созданы после последнего выполнения такой же команды, сохраняя их размещение в файловой структуре, с диска в приводе С на диск в приводе А;

■ ATTRIB С:\ +А /S

XCOPY С:\ А:\ /S/M — скопировать (зарезервировать) файловую структуру диска в приводе С на последовательность дискет в приводе А (за исключением пустых каталогов). Как только очередная дискета заполнится, XCOPY выдаст сообщение «disk full», после чего следует установить чистую дискету и вновь ввести команду XCOPY. Если повторить описанные действия до тех пор, пока все файлы и каталоги не будут продублированы, то на дискетах получится резервная копия жесткого диска. Для восстановления информации на нем в случае ее разрушения можно воспользоваться командой COPY или XCOPY;

■ XCOPY C:\LOTUS /D:10-22-91 — скопировать файлы из каталога \LOTUS диска в приводе С, созданные не раньше 22.10.91 г., в рабочий каталог,

■ XCOPY C:\L014JS /А — то же, но копируются только файлы, имеющие атрибут А, независимо от даты их создания;

■ XCOPY C:\LOTUS /А /D:10-22-91 .— скопировать из каталога \LOTUS диска в приводе С файлы, созданные не раньше 22.10.91 г. и имеющие атрибут А, в рабочий каталог;

■ XCOPY C:\LOTUS /А /D: 10-22-91 /S — то же, но дополнительно копируются поддеревья файловой структуры, корни которых содержатся в каталоге \ LOTUS, включая только файлы, удовлетворяющие тем же ограничениям. Пустые каталоги не дублируются;

■ XCOPY А:\*.ЕХЕ В:\ /S/Е — скопировать файловую структуру диска в приводе А с учетом только файлов с расширением ЕХЕ и всех (в том числе пустых) каталогов на диск в приводе В. Корнем дубликата будет корневой каталог этого диска.

Команда REPLACE

 

Назначение: копирование файлов с заменой или без замены существующих файлов.

Тип: внешняя.

Синтаксис:

REPLACE pattern [dir] [/А] [/Р] [/R] [/S] [/W]

Комментарии. REPLACE предоставляет пользователю дополнительные по сравнению с ко­мандами COPY и XCOPY возможности по копированию файлов.

Спецификация pattern задает множество файлов, подлежащих копированию, а dir — каталог, в который требуется поместить дубликаты. При этом составные имена дубликатов всегда будут совпадать с составными именами файлов-оригиналов. Первый аргумент (pattern), как обычно, назовем исходным, а второй (dir) — целевым. Если целевой аргумент не задан, то подразумевается рабочий каталог.

Без переключателей команда REPLACE осуществляет замену существующих в целевом каталоге файлов одноименными файлами из множества, выделенного по исходному аргументу. Таким образом, копируются не все выделенные по pattern файлы, а только те из них, которые существуют в целевом каталоге.

В командной строке допустимы следующие, переключатели:

/S — осуществить поиск одноименных выделенным по pattern файлов во всем поддереве файловой структуры с корнем dir и найденные файлы заменить соответствующими файлами-оригиналами путем копирования последних. Ненайденные по целевому аргументу файлы не дублируются. Поддеревья, файловой структуры, доступные по исходному аргу­менту, в глубину при поиске исходных файлов не просматриваются. Этот переключатель несовместим с /А;    

/А — дополнить содержимое dir теми файлами из выделенных по pattern, составные имена которых не зарегистрированы в dir (т.е. проинвертировать действие команды). В результате этого копируются только новые для dir файлы. Переключатель /А несовместим с /S и отменяет действие /R;

/R — обеспечить возможность замены не только файлов без атрибута R, но и с таким атрибутом. Этот переключатель не имеет смысла указывать совместно с /А;

/Р — запрашивать у пользователя подтверждение на запись каждого файла на диск по целевому аргументу (для замены или добавления) путем выдачи сообщения «Replace file (Y/N)?»;

/W — в начале выполнения команды сделать паузу с выдачей на экран дисплея сообщения «Press any key when ready* («Затем нажмите любую клавишу») или «Press any key to continue* («Нажмите любую клавишу для продолжения»).

По завершении выполнения команды на экран дисплея выводится сообщение

п file(s) added/replaced

(n файл(ов) добавлено/заменено)

или

No files added/replaced

(Никакие файлы не добавлены/не заменены)

Команда REPLACE вырабатывает следующие коды возврата:

0 — успешное завершение;

2 — файл не найден;

3 — маршрут не найден;

5 — доступ запрещен (попытка замены файла с атрибутом R без переключателя /R);

8 — недостаточно памяти для выполнения команды;

11 — ошибка в командной строке;

            15 — ошибочно задан привод.

Замечания:

― команду REPLACE целесообразно использовать для замены старой версии программного продукта новой версией, а также для ускорения добавления отсутствующих файлов;

— спецификация каталога в качестве исходного аргумента не допускается;

— файлы с атрибутами Н и/ил и S командой REPLACE не обрабатываются;

— атрибут /R в дубликат не переносится;

— у каждого дубликата всегда взводится атрибут /А;

— никакие каталоги командой REPLACE не создаются;

— переключатель /W обеспечивает удобство работы на ПЭВМ, не оборудованной же­стким диском.

Примеры:

■ REPLACE *.* D: — заменить существующие в текущем каталоге диска в приводе D файлы одноименными файлами из рабочего каталога;

■ REPLACE А:\*.* С:\ /S — заменить каждый файл в любом каталоге диска в приводе С, совпадающий с одним из файлов в корневом каталоге диска в приводе А, последним;

■ REPLACE A:\*.PRD C:\MSTOOLS /А - дополнить каталог C:\MSTOOLS PRD-файлами из корневого каталога диска в приводе А.

DOS 4.0. Допустим дополнительный переключатель /U, разрешающий замену только в том случае, когда файл-оригинал создан позже (по дате и времени) подлежащего замене одно­именного файла.

Команда TYPE

 

Назначение: отображение содержимого файла.

Тип: внутренняя.

Синтаксис:

TYPE file

Комментарии. Эта команда обеспечивает беглый просмотр на экране дисплея содержимого текстового файла, спецификация которого задана в качестве аргумента.

Замечания:

— задание шаблона в аргументе команды недопустимо. Для вывода на экран содержимого множества файлов можно использовать команду COPY с целевым аргументом CON;

— не следует указывать в команде TYPE двоичный файл (Вы увидите только странные символы, услышите звуковые сигналы, и Вам, возможно, придется неоднократно нажимать какую-либо клавишу для продолжения выдачи);

— файлы с атрибутами Н и/или S команде TYPE недоступны;

— в отличие от COPY команда TYPE при выводе на экран всегда расширяет каждый символ TAB в файле до такого количества пробелов, чтобы последующий символ появился в очередной позиции табуляции (в ближайшей справа позиции строки, номер которой кратен восьми, т.е. 8, 16, 24 и т.д.);

— если размер файла велик, вследствие чего все его содержимое не помещается на экране, то данные выдаются сплошным потоком без остановки. Для приостановки прокрутки изображения можно использовать клавишу Pause или фильтр MORE, а для продолжения — любую клавишу,

— для печати командой TYPE содержимого файла на принтере можно задать перенаправление стандартного вывода или нажать перед завершением ввода команды комбинацию клавиш Ctrl-PrtSc, но лучше применить команду PRINT;

— действие комбинации клавиш Ctrl-PrtSc в оболочке Norton Commander блокируется;

— перенаправление вывода команды TYPE в файл не обеспечивает создания дубликата исходного файла с необходимым количеством пробелов вместо символов TAB (осуществляется копирование байт в байт).

Примеры:

■ TYPE MYFILE.TXT — вывести содержимое файла MYFILE.TXT из рабочего каталога на экран дисплея;

■ TYPE MYFILE.TXT «Ctrl-PrtSc* «« Enter* — то же, но файл дополнительно печатается на принтере (Ctrl-PrtSc целесообразно нажать перед завершением ввода команды, а не до ее набора, чтобы сама команда не была отпечатана).

Команда PRINT

 

Назначение: печать файлов на принтере.

Тип: внешняя.

Синтаксис.

При первом вызове:

PRINT [/D:устройство] [/B:b] [/Q:q] [/S:s] [/M:m] [/U:и][/T|  pattern [/P] [/С] ►]...

При последующих вызовах:

PRINT [/Т|  ◄pattern [/P] [/С] ►]...

Комментарии. Данная команда обеспечивает вывод содержимого выделенных по pattern (обыч­но текстовых) файлов на принтер в фоновом режиме. Это означает, что в ходе печати на ПЭВМ может выполняться и другая (основная) задача. Разделение ресурсов компьютера между основной и фоновой задачами осуществляется DOS в соответствии со значениями, заданными в переклю­чателях /S, /М и /U.

Команду PRINT можно использовать только в том случае, когда устройство вывода (принтер или графопостроитель) подключено к одному из адаптеров параллельного или последовательного интерфейса

При первом после загрузки DOS выполнении команды PRINT можно установить параметры печати доя оптимизации этого процесса в зависимости от конфигурации оборудования и потребностей пользователя. Последующие вызовы данной команды обеспечивают только управление очередью печати.

Для установки параметров печати используются следующие факультативные переключатели (все они, за исключением /D, имеют значения по умолчанию):

/D:устройство — задает имя посимвольного устройства вывода. Допустимыми значениями яв­ляются имена адаптеров параллельного интерфейса LPT1 (PRN), LPT2 и LPT3, а также имена адаптеров последовательного интерфейса СОМ1, COM2, COM3 и COM4. Если Вы специфицировали /D, то он должен быть первым пере­ключателем в командной строке;

/В:Ь — устанавливает равным Ъ (в байт) размер внутреннего буфера, в котором хранится фрагмент печатаемого в данный момент файла. Целесообразно задавать число, кратное 512 (размеру сектора). Допустимые значения лежат в диапазоне от 512 до 1634. По умолчанию принимается 512. Увеличение размера буфера ведет к ускорению печати, но к уменьшению объема доступной основной задаче памяти;

/Q:q — обеспечивает формирование очереди печати из q элементов (максимальное число файлов, которые могут одновременно находиться в очереди печати). Допустимы значения от 4 до 32, а по умолчанию принимается 10. Если Вы указываете переключатель /Q, то в командной строке никакие аргументы pattern недопустимы. Увеличение размера очереди печати повышает удобство работы, но ведет к некоторому увеличению задействованного объема ОЗУ;

/S: s — задает числом s интервал времени в тиках внутренних часов ПЭВМ, в течение которого основная задача будет использовать МП и по истечении которого будет происходить переключение МП с нее на фоновую задачу (PRINT). 1 тик равен 55 мс (1/18 доля секунды). Допустимы значения от 1 до 255; по умолчанию — 8;

/М: m — задает непрерывный интервал времени в тиках (посредством числа т), в течение которого команде PRINT разрешается использовать ресурсы ПЭВМ до пере­ключения на основную задачу. Допустимы значения от 1 до 255. По умолчанию принимается 2;

/U:w — определяет числом и интервал времени в тиках, в течение которого команда PRJNT будет ждать перевода принтера в готовность до активизации интервала, заданного переключателем /S. Допустимыми являются значения от 1 до 255, а по умолчанию принимается 1.

Если переключатель /D не задан, то пользователю выдается запрос

Name of list device [PRN]:

(Имя печатающего устройства)

Для указания PRN достаточно в ответ на него нажать клавишу Enter. В противном случае следует ввести имя адаптера интерфейса.

Для управления очередью печати используются следующие переключатели:

/Т — удалить все файлы из очереди печати и отменить печать текущего файла;

/Р — поставить файлы, выделенные по pattern, в очередь печати. Область действия этого переключателя распространяется на предыдущий и все последующие аргументы до начала области действия переключателя /С;

/С — удалить файлы, выделенные по pattern, из очереди печати. Область действия этого пере­ключателя распространяется на предыдущий и все последующие аргументы до начала области действия переключателя /Р.

Очевидно, переключатели /Р и /С, приписанные к одному аргументу, несовместимы. По умолчанию действует переключатель /Р, так что его использование имеет смысл, если ранее в командной строке указан один из переключателей /Т или /С.

Файлы выводятся на принтер в порядке постановки их в очередь для печати. Если одновременно в очередь помещается несколько файлов (по шаблону в pattern), то они выбираются в порядке их вхождения в каталог на диске.

Чтобы отобразить на экране содержимое очереди печати, следует выдать команду PRINT без каких-либо аргументов и переключателей.

Замечания:

— команда PRINT не обеспечивает форматирования выводимого текста, хотя перед началом вывода каждого файла из очереди печати осуществляется перевод страницы. Разбивка содержимого файла на страницы может быть реализована только самим принтером или по управляющим символам в файле;

— не следует указывать в команде PRINT двоичные файлы;

— аналогично TYPE команда PRINT расширяет символы TAB в несколько пробелов;

— PRINT позволяет повысить производительность ПЭВМ за счет организации фоновой печати;

— команда PRINT увеличивает размер резидентной части DOS;

— каждый элемент очереди печати может содержать не более 64 символов (включая имя логического привода), так что пользователю иногда может потребоваться изменить местополо­жение печатаемых файлов в файловой структуре;

— принтер командой PRINT используется монопольно;

— чем меньше значение в переключателе /М И чем большее значение задано переключателем /S, тем медленнее будет осуществляться печать;

— если Вы используете команду PRINT часто, то следует опытным путем подобрать опти­мальные для Вас и конфигурации оборудования значения в переключателях. Затем команду PRINT в формате первоначального использования (с целью установки параметров печати) можно поместить в командный файл, в частности в AUTOEXEC.BAT;

— некоторые программные продукты снабжены собственным аналогом команды PRINT, который и следует использовать при работе с ними;

— существует много утилит, имеющих более богатые возможности, чем PRINT, но последняя уникальна тем, что обеспечивает фоновую печать;

— если Ваша ПЭВМ снабжена принтером с низким уровнем автоматизации процесса печати (в частности, без автоматической подачи бумажных листов), то Вам во время вывода на него некогда будет выполнять другие работы (тогда возможности фоновой печати не для Вас).

Примеры:

■ PRINT /D:AUX /U:2 /S:4 — установить типичные параметры для оптимизации производительности последовательного LQ-принтера (или другого относительно медленного пе­чатающего устройства), но пока ничего не печатать;

■ PRINT GMEMO.TXT — начать печатать (точнее — поместить в очередь печати) файл МЕМО.ТХГ,

■ PRINT /Т СНАР*.ТХТ /Р INTR.TXT CHAPTER4.TXT /С — немедленно завершить печать, очистить очередь печати и поместить в нее файлы СНАР*.ТХТ, а также INTR.TXT; затем удалить из очереди файл CHAPTER4.TXT;

■ PRINT CHAP1.TXT /С CHAP10.TXT — удалить из очереди печати указанные файлы.

Команда BACKUP

 

Назначение: резервное копирование (резервирование) файлов с одного диска на другой.

Тип: внешняя.

Синтаксис:

BACKUP {dir | pattern} [d:] [/S] [/М] [/A] [/F] [/D:date] [/T:time] [/L:[file]]

Комментарии. Эта команда осуществляет резервное копирование файлов на другой диск для того, чтобы в последующем можно было восстановить оригиналы в случае разрушения инфор­мации на диске или случайного их удаления. Дубликаты файлов создаются в специальном формате, что делает невозможной их обработку традиционными средствами DOS. Обычно BACKUP применяется для дублирования файлов, размещенных на жестком диске. Резервные копии при этом помещаются на дискеты, совокупность которых называется резервным набором.

Первый аргумент в командной строке является исходным и определяет (по шаблону) подле­жащее резервированию множество файлов. Это множество может расширяться или ограничиваться переключателями. Если указана спецификация dir, то предполагается dir\*.*.

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

В командной строке допустимы следующие переключатели:

/S — резервировать не только заданные по pattern файлы, но и файлы во всех подчиненных выделенному каталогах, сопоставимые с шаблоном в pattern. Дубликаты при этом будут размещаться таким образом чтобы обеспечивалось последующее восстановление не только содержимого этих файлов, но и всей файловой подструктуры, в которой находились оригиналы. Выделенное описанным способом множество файлов может быть ограничено переключателями /М,? /D и /Е;

/М — резервировать из выделенного множества только те файлы, которые были созданы или модифицированы после последнего резервирования. При задании /М выбираются лишь файлы с атрибутом А, и после дублирования этот атрибут у оригиналов сбрасывается;

/А — добавить резервируемые файлы к тем, которые уже находятся на целевом диске. Если /А опущен, то имеющаяся на целевом диске информация удаляется;

/F — перед резервированием отформатировать целевой диск, если он еще не размечен. Форматирование осуществляется путем запуска утилиты FORMAT. Поэтому она должна находиться в рабочем каталоге или в каталоге, маршрут к которому задан в команде PATH;

/D:date — резервировать из выделенного множества только те файлы, которые созданы не ранее указанной посредством date даты. Для получения дополнительной информации см. описание команды DATE;

/Т:tiте — резервировать из выделенного множества только те файлы, которые созданы не ранее заданного посредством time времени. Для получения дополнительной информации см. описание команды TIME ниже. Переключатель /Т целесообразно использовать только совместно с /D;

/L:[file] — поместить протокол резервирования в указанный файл. .Если спецификация файла не задана, то протокол помещается в файл BACKUP.LOG в корневом каталоге исходного диска. Файл протокола не обязательно должен существовать, но если он уже имеется, то новый протокол дописывается в его конец.

Каждый из переключателей /М, /D и /Т только усиливает ограничения, налагаемые на резервируемое множество файлов (дополнительно фильтрует его по определенному критерию).

Следовательно, критерии объединяются, как и в других командах, по «И», а не по «ИЛИ». Иными словами, резервированию подлежат только файлы, удовлетворяющие одновременно всем огра­ничениям, заданным исходным аргументом и переключателями.

При заполнении целевого диска команда выдает сообщение, в ответ на которое следует поместить в накопитель следующий диск. Каждый целевой диск нужно соответствующим образом пометить, написав на нем его порядковый номер в данном сеансе резервирования. Это облегчит при необходимости восстановление информации.

Протокол резервирования в первой строке содержит текущую дату и время, а в каждой последующей — спецификацию продублированного файла и порядковый номер целевого диска, на который помещена копия.

Команда BACKUP выдает следующие коды возврата:

0 — нормальное завершение;

1 — для резервирования не выбрано ни одного файла;

2 — некоторые файлы не зарезервированы из-за конфликтов по совместному их использованию

(разделению);

3 — выполнение команды принудительно завершено пользователем;

4 — выполнение команды аварийно завершено из-за ошибки.

Замечания:

— команда BACKUP является уникальным средством DOS для переноса файлов, длина которых превышает емкость дискеты, на жесткие диски других ПЭВМ, а также для резервирования таких файлов;

— переносимые файлы целесообразно предварительно разместить в корневом каталоге ис­ходного диска, чтобы впоследствии перед восстановлением файлов на винчестере другой ПЭВМ не воссоздавать исходный маршрут. Дело в том, что по команде RESTORE файлы будут восстанавливаться с сохранением их местоположения в исходной файловой структуре;

— BACKUP может быть использована для резервирования файлов с любого диска на любом (не обязательно с жесткого на гибком);

— наиболее близким функциональным аналогом BACKUP является команда XCOPY, причем по­следняя выполняется быстрее, но не позволяет резервировать указанные в первом замечании файлы;

— восстановить зарезервированную посредством команды BACKUP информацию можно толь­ко путем выполнения команды RESTORE;

— команда BACKUP часто требует явного задания (пусть даже текущего) исходного привода;

— вся резервируемая информация записывается на целевой диск в единый файл BACKUP.nnn (где nnn — порядковый номер диска), а справочная информация помещается в файл CONTROL.nnn и используется командой RESTORE. Оба названных файла будут иметь атрибуты R и А;

— наличие протокола резервирования и надписей на дискетах облегчит избирательное вос­становление файлов вследствие того, что пользователь сможет быстро выбрать дискеты, содер­жащие требуемые файлы;

— утилита BACKUP не резервирует системные файлы с MP BIOS, БМ DOS и КП;

— файлы с атрибутами Н и/ил и S командой BACKUP не обрабатываются; если не задан переключатель /М, то атрибут А у оригиналов не сбрасывается, но в любом случае сбрасывается в дубликатах; файлы с атрибутом R резервируются, причем этот атрибут будет установлен при их восстановлении;

— не следует использовать команду BACKUP, когда привод, с которого осуществляется резервирование, задействован в команде ASSIGN, JOIN или SUBST. Если Вы все же пренебрегли этой рекомендацией, то не сможете восстановить зарезервированные файлы;

— при разделении (совместном использовании) файлов система позволит Вам зарезервировать только те файлы, доступ к которым разрешен;

— резервирование требует много времени: например, дублирование всего лишь 10-Мбайт жесткого диска займет около двух часов; при этом нужны будут около 30 360-Кбайт дискет. Тем не менее эту процедуру необходимо выполнять регулярно, если на жестком диске имеется уникальная обновляемая информация;

— для создания надежных архивов перед резервированием нужно выполнить команду VERIFY ON.

Примеры:

■ BACKUP С:\ARC\LONGFILE.LZH  А: — зарезервировать указанный файл на дискете (дискетах) в приводе А;

■ BACKUP С:\ A: /S — зарезервировать все файлы с диска в приводе С, на дискетах в накопителе А;

■ BACKUP С:\DBASE\*.DBF A: /S — зарезервировать все файлы с расширением DBF из файловой подструктуры, в корне которой находится каталог C:\DBASE, на дискетах в приводе А;

■ BACKUP C:\*.DAT А: /S/M/А — зарезервировать все файлы с расширением DAT с диска в приводе С, которые были изменены после последнего дублирования с переключателем /М, на одной или нескольких дискетах в приводе А с сохранением имеющейся на этих дискетах информации;

■ BACKUP С:\ A:    /S/D:01-13-90 /Т: 17:00:00 /L:C:\13JAN90.BKP~ зарезервировать все файлы с диска в приводе С, созданные не ранее 17.00 13.01.90 г., на дискетах в накопителе А и поместить протокол в файл C:\13JAN90.BKP;

■ BACKUP С:\ A: /F — зарезервировать содержимое диска в приводе С на дискетах в накопителе А с их предварительным (при необходимости) форматированием.

DOS 4.0. Для задания формата дискеты, отличного от определяемого НГМД и его драйвером, переключатель /F можно указывать в форме /F:формат. Допустимые значения поля формат приведены в описании команды FORMAT.

Команда RESTORE

 

Назначение: восстановление зарезервированных посредством команды BACKUP файлов.

Тип: внешняя.

Синтаксис:

RESTORE d: pattern [/S] [/P] [/B:date] [/A:date] [/E:time] [/L:time] [/M] [/N]

Комментарии. Данная команда используется для восстановления на диске разрушенных или случайно удаленных файлов, если они предварительно были зарезервированы на другом диске (дисках) командой BACKUP. Обычно в качестве исходных для восстановления применяются гибкие диски, а информация регенерируется на жестком диске.

Первый аргумент команды является исходным и определяет привод, в который устанавливаются диски с резервными копиями файлов.

Второй аргумент является целевым и определяет восстанавливаемые файлы (а также их размещение при восстановлении). Задавать целевой аргумент нужно так* чтобы он соответствовал исходному аргументу команды BACKUP, посредством которой исходный резервный набор со­здавался. Под соответствием в данном случае понимается то, что множество спецификаций файлов, выделенных по целевому аргументу команды RESTORE, должно пересекаться с множе­ством спецификаций файлов, выделенных по исходному аргументу соответствующей команды BACKUP (при этом маршруты должны полностью совпадать, а приводы могут различаться). Если первое множество содержится во втором, то будет восстанавливаться только часть заре­зервированных файлов. В противном случае могут восстанавливаться либо часть, либо все зарезервированные файлы, что определяется видом шаблона. В частности, если вы зарезервировали файлы по шаблону *.DOC, то можете восстановить их по шаблону *.* (все DОС-файлы) или CHAP*.* (только те DOC-файлы, имена которых начинаются с CHAP). Такая техника позволяет извлечь из резервного набора не все имеющиеся в нем файлы, а только некоторые из них, но восстановленные файлы обязательно должны быть размещены в тех же местах файловой структуры, где были оригиналы при резервировании. Как раз поэтому перед переносом (возможно, длинных) файлов с одной ПЭВМ на другую рекомендуется скопировать исходные файлы в корневой каталог жесткого диска.

В командной строке допустимы следующие переключатели, расширяющие или ограничива­ющие множество выделенных по pattern файлов:

/S — восстанавливать не только заданные целевым аргументом файлы, но и файлы во всех подчиненных каталогах с учетом ограничений, накладываемых посредством pattern и другими переключателями;

/Р — выдавать запрос на подтверждение восстановления (перезаписи) каждого файла, если он на целевом диске уже существует и имеет атрибут R Когда /Р не задан, файлы с атрибутом R заменяются на целевом диске без каких-либо предупреждающих сообщений;

/Bidate — восстановить только те файлы, которые на целевом диске в последний раз модифици­рованы не позже указанной даты date, тем самым заместив их зарезервированными версиями;

/A'.date — восстановить только те файлы, которые на целевом диске в последний раз модифи­цированы не раньше указанной даты date (тем самым заместив их зарезервированными версиями). Пара переключателей /В и /А позволяет выбрать любой диапазон дат,

/E:time ― восстановить только те файлы, которые на целевом диске в последний раз моди­фицированы не позже указанного времени time. Переключатель имеет смысл исполь­зовать только совместно с /В;

/VJime — восстановить только те файлы, которые на целевом диске в последний раз были модифицированы не раньше указанного времени time. Переключатель имеет смысл использовать только совместно с /А;

/М — восстановить только те файлы, которые на целевом диске модифицированы после последнего резервирования (т.е. в момент восстановления имеют атрибут А) или отсутствуют (удалены);

/N — восстановить только файлы, которые на целевом диске больше не существуют (удалены).

Восстановлению подлежат лишь файлы, удовлетворяющие одновременно всем критериям, заданным целевым аргументом (шаблоном) и переключателями.

После ввода команды Вы будете оповещены о необходимости установки дискеты 01 созданного ранее резервного набора. Можно выполнить это предписание или установить сразу именно ту дискету, которая содержит восстанавливаемый файл (файлы). Сведения о расположении файлов в резервном наборе находятся в протоколе резервирования (см. описание команды BACKUP). Бели требуется поместить в дисковод следующий диск, то команда RESTORE сообщит Вам об этом.

Данная команда вырабатывает следующие коды возврата:

0 — нормальное завершение;

1 — для восстановления не найдено ни одного файла;

3 — выполнение команды принудительно завершено пользователем;

4 — выполнение команды аварийно завершено из-за ошибки.

Замечания:

— команда RESTORE восстанавливает файлы из резервных наборов, созданных командами BACKUP более ранних версий DOS;

— ни исходный, ни целевой аргументы опускать нельзя;

— целевой аргумент часто допускается задавать в виде символа . для обозначения шаблона *.* или d: для краткого указания d:.\*.*, однако спецификацию dir в общем случае употреблять нельзя;

— команда RESTORE при восстановлении поддерева файловой структуры в случае необхо­димости автоматически создает требуемые каталоги;

— RESTORE аналогично команде XCOPY не разрушает, а лишь дополняет существующее дерево файловой структуры;

— после завершения выполнения команды RESTORE не мешает убедиться в результатах ее работы с помощью команд DIR и TYPE;

— зарезервированные с жесткого диска на одной ПЭВМ файлы можно восстановить на жесткий диск другой ПЭВМ, обеспечив тем самым транспортирование информации;

— переключатели /В и /Е используются для замещения старых файлов их новыми версиями;

— переключатели /А и /L или переключатель /М (последний — после команды BACKUP с одноименным переключателем) применяются для замещения неверно модифицированных файлов их старыми зарезервированными версиями;

— когда Ваш жесткий диск заполнится файлами целиком, Вы можете зарезервировать ка­кое-либо не используемое в данный момент поддерево файловой структуры и удалить его, чтобы разместить на диске новые файлы. Для восстановления удаленных файлов нужно проделать ту же процедуру с другим поддеревом файловой структуры и выполнить команду RESTORE для ранее зарезервированного поддерева.

Примеры:

■ RESTORE А: С:\ARC\LONGFILE.LZH — восстановить указанный файл;

■ RESTORE А:  С:\*.* /S — восстановить на диске в приводе С все существующие в резервном наборе файлы;

■ RESTORE A: C:\DBASE\*.DBF /S — восстановить поддерево файловой структуры, содержащее файлы с расширением DBF, в каталоге C:\DBASE;

■ RESTORE А: С:\*.* /S /А: 01-13-90 /В:01-14-90 — восстановить на диске в приводе С все файлы, модифицированные в последний раз с 13 по 14 января 1990 г.

Команда SHARE

 

Назначение: установка многопользовательского режима использования файлов в ЛВС.

Тип: внешняя.

Синтаксис:

SHARE [/F:ƒ] [/L:l]

Комментарии. Эта команда используется в локальной сети при наличии сетевого ПО, осу­ществляющего блокировку файлов для того, чтобы в каждый момент доступ к ним мог осуще­ствлять только один пользователь (точнее — процесс). Такой режим доступа к файлам принци­пиально необходим при их обновлении, так как результат одновременного выполнения этой операции разными процессами непредсказуем.

Действие команды SHARE состоит в том, что каждая операция обмена с файлом, запрошенная выполняемой программой, проверяется на допустимость в соответствии с кодом разделения (sharing), т.е. с состоянием запора, после установки которого файл открыт. Для реализации этого активизируется контроль блоков управления файлами — FCB (см. описание команды FCBS= в п. 5.10.2). FCB здесь является аббревиатурой от File Control Block.

Если во время выполнения операции чтения или записи диск был извлечен из привода, то специальным сообщением будет предложено установить его, а после выполнения этого требования будет осуществлена проверка диска по метке тома. При выявлении установки не того диска, который требуется, будет снова выдано сообщение, И только после того, как резидентная программа, загруженная командой SHARE, убедится в корректности установки диска, операция чтения/записи будет продолжена.

В командной строке можно указывать следующие переключатели:

/F: /— выделить область памяти размером в/байт для записи информации о разделении файлов. По умолчанию принимается 2048. Отметим, что каждый открытый файл требует поля, достаточного для размещения его составного имени и еще 11 байт другой информации. Тогда получается около 20 байт на файл;

/L: /— установить / запоров на блокировку доступа к файлам (по умолчанию — 20).

Замечания:

— команда SHARE только создает условия для блокировки одновременного доступа к файлам, но не обеспечивает ее. В частности, запоры устанавливаются и снимаются/сетевым ПО;

— выполнение команды SHARE приводит к увеличению размера резидентной части DOS примерно на 6 Кбайт в результате загрузки в ОЗУ дополнительных программ и таблиц;

— команда SHARE обеспечивает определенную защиту информации на дискетах в IBM PC AT и ПЭВМ семейства PS/2. Например, если извлечь дискету при выполнении операции записи, в частности после обновления каталога, но до обновления FAT, будет выдано сообщение и запись не будет продолжена до тех пор, пока Вы не установите именно требуемую дискету.

Пример: SHARE /F:1024

DOS 4.0. Команда SHARE обеспечивает работу с логическими дисками на винчестере, размер которых превышает 32 Мбайт. Если у Вас имеются такие диски, то необходимо при запуске DOS выдать SHARE из файла AUTOEXEC.BAT или с использованием команды конфигурирования INSTALL = . Если же утилита SHARE находится в корневом каталоге системного диска или в каталоге, указанном в команде конфигурирования SHELL = , то она выполняется автоматически. Иногда при автоматическом выполнении команда SHARE работает лучше.