Сделай Сам Свою Работу на 5

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





 

Команда ERASE (DEL)

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

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

Синтаксис:

ERASE {pattern | dir}

или

DEL {pattern | dir}

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

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

All files directory will be deleted!

Are you sure (Y/N)?

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

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

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

Замечания:

- DOS не содержит средств восстановления удаленных файлов. Поэтому данную команду следует использовать аккуратно;

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

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



Примеры:

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

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

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

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

File, Delete (Y/N)?

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

При ответе Y указанный файл будет удален; иначе он останется в целости и сохранности.



 

Команда RENAME (REN)

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

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

Синтаксис:

RENAME pattern compname

или

REN pattern compname

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

Замечания:

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

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

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

Примеры:

1) REN \*.TXT *.DOC –изменить расширение TXT на DOC у всех файлов в корневом каталоге текущего диска;

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

3) КУТ 02.TXT 1?.* - переименовать файл 02.TXT в файл 12.TXT.

 

Команда ATTRIB

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



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

Синтаксис:

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

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

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

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

Замечания:

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

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

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

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

Примеры:

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

2) ATTRIB –R +A *.TXT – установить атрибут А и сбросить атрибут R у всех файлов с расширением TXT в рабочем каталоге;

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

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

5) ATTRIB +A C:\*.TXT /S – установить атрибут А у всех файлов с расширением TXT на диске в приводе С.

 

Команда COMP

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

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

Синтаксис:

COMP [dir1 | pattern1] [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 = yy

FILE2 = zz

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

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

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 сравнивает только содержимое файлов и не учитывает их физическое размещение на дисках;

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

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

- сравнение файла с самим собой обеспечивает проверку считываемости.

Примеры:

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

2) COMP C:*.ASM B:*.BAK- сравнить файлы *.ASM, содержащиеся в текущем каталоге диска в приводе С, с одноименными, но с расширением BAK, файлами из текущего каталога диска в приводе В;

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

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

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

 

Команда COPY

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

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

Синтаксис.

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

COPY {dir1| pattern1} [/V][/A|/B] [dir2| pattern2] [/V][/A|/B]

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

COPY {pattern1 |dir1} [/V] [/A|/B]

[+ {pattern2 |dir2} [/V] [/A|/B]…

{patternN| 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 file1 + file 2 file 1

или

COPY file1 + file2

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

Content of distination lost before copy

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

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

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

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

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

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

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

n File(s) copied

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Замечания:

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

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

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

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

- Файлы с атрибутом H и/или S командой COPY не обрабатываются

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

Примеры:

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

2) COPY A:\MYFILE.DAT B:*.BAK – то же;

3) COPY A:\MYFILE.DAT – скопировать указанный файл в рабочий каталог (без переименования);

4) COPY MYFILE.DAT B: - скопировать указанный файл из рабочего каталога в текущий каталог диска в накопителе В (без переименования);

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

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

7) COPY A:*.BAS C:*.BAK – то же, но у дубликатов меняется расширение с DAS на BAK;

8) COPY A: B: - скопировать все файлы из текущего каталога диска в приводе А в текущий каталог диска в приводе В;

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

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

11) COPY *.TXT + R.REF *.DOC – найти в рабочем каталоге первый TXT –файл, присоединить к нему содержимое файла R.REF и поместить результат в файл с тем же именем, что и TXT –файл, но с расширением DOC;

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

13) COPY *.TXT COMBIN.DOC – объединить все файлы с расширением TXT в единый файл COMBIN.DOC; очередность обработки исходных файлов зависит от порядка их вхождения в рабочий каталог;

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

15) COPY *.TXT + *.REF COMBIN.DOC – сцепить последовательно все файлы с расширением TXT, присоединить к ним содержимое всех файлов с расширением REF и поместить результат в файл COMBIN.DOC; порядок выбора TXT и REF -файлов зависит от последовательности их вхождения в рабочий каталог;

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

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

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

19) COPY F1.TXT /A F2.TXT /B – скопировать содержимое файла F1.TXT в файл F2.TXT с отсечением маркера EOF, если он в первом файле имеется;

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

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

 

Команда XCOPY

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

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

Синтаксис:

XCOPY [dir1 | pattern1] [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 = file D = directory)?

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

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

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

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

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

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

/D: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 - критическая ошибка ввода-вывода, на которую пользователь прореагировал ответом А.

Замечания:

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

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

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

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

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

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

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

 

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

- дублирование файлов с защищенных от копирования дискет к успеху не приводит;

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

- циклическое копирование выполнять запрещается.

Примеры:

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

2) XCOPY A: - скопировать все файлы из текущего каталога диска в накопителе А в рабочий каталог;

3) XCOPY *.BAS *.BAK – скопировать все файлы с расширением BAS из рабочего каталога в тот же каталог с одновременным изменением расширений на BAK;

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

5) XCOPY А:\ В:\ /S/E – скопировать содержимое диска в приводе А на диск в приводе В. Если последний пуст, а первый не содержит файлов с атрибутами H и S, то диск в приводе В станет логической копией диска в приводе А. В противном случае файловая структура целевого диска пополнится файловой структурой исходного, если не принимать во внимание скрытые и системные файлы;

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

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

8) XCOPY C:\LOTUS /D:10-22-04 - скопировать файлы из каталога \LOTUS диска в приводе С, созданные не раньше 22.10.04 г., в рабочий каталог;

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

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

11) XCOPY А:\*.EXE B:\ /S/E - скопировать файловую структуру диска в приводе А с учетом только файлов с расширением EXE и всех (в том числе пустых) каталогов на диск в приводе B. Корнем дубликата будет корневой каталог этого диска.

 

 

Команда REPLACE

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

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

Синтаксис:

REPLACE pattern [dir] [/A] [/P] [/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» (« Нажмите любую клавишу для продолжения»).

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

n file(s) added/replaced

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

или

no files added/replaced

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

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

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

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

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

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

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

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

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

Замечания:

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

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

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

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

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

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

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

Примеры:

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

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.