Цикл довузовской подготовки кафедры ЭФУ

1.4. Копирование и перемещение файлов и директорий

Командный интерпретатор Cmd.exe предоставляет широкие возможности по редактированию файловой системы путем копирования, перемещения и переименования файлов и директорий с вложенными каталогами и файлами.

Команда COPY позволяет копировать один или несколько файлов из одной директории в другую, используя как абсолютные, так и относительные пути к файлам (Пример 1.21 – считается, что дерево – Рис. 1.5 – построено полностью).


Пример 1.21. Копирование файлов

Пример 1.21. Копирование файлов
d:\WINLAB>tree papa /f
D:\WINLAB\PAPA
├───incredible
│         papa3.txt
│         papa4.txt
└───math
    ├───strong
    │      papa1.txt
    └───study
           papa2.txt
d:\WINLAB>copy papa\math\study\papa2.txt papa\math\strong
Скопировано файлов:         1.
d:\WINLAB>cd papa\math\strong
d:\WINLAB\papa\math\strong>dir /b
papa1.txt
papa2.txt
d:\WINLAB\papa\math\strong>copy ..\..\incredible
..\..\incredible\papa3.txt
..\..\incredible\papa4.txt
Скопировано файлов:         2.
d:\WINLAB\papa\math\strong>dir /b
papa1.txt
papa2.txt
papa3.txt
papa4.txt
d:\WINLAB\papa\math\strong>
		

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

COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/L] [/A | /B] источник [/A | /B]
[+ источник [/A | /B] [+ ...]] [результат [/A | /B]]


/A – Файл является текстовым файлом ASCII.

/B – Файл является двоичным файлом.

/D – Указывает на возможность создания шифрованного файла.

/V – Проверка правильности копирования файлов.

/N – Использование, если возможно, коротких имен.

/Y – Подавление запроса подтверждения на перезапись.

/-Y – Запрос подтверждения на перезапись конечного файла.

/Z – Копирование сетевых файлов с возобновлением.

/L – Копирование символической ссылки, вместо файла.


Чтобы объединить несколько файлов в один, необходимо указать один конечный и несколько исходных файлов, используя формат: «файл1+файл2+файл3+...», использование масок, в частности «звездочки» – обозначающей «любой набор символов» приводит ровно к тому же результату (Пример 1.22).



unix-workdir

Пример 1.22. Вывод текстового файла на экран

d:\WINLAB\papa\math\strong>copy papa1.txt+papa2.txt+papa3.txt+papa4.txt papa.txt
……….
d:\WINLAB\papa\math\strong>dir /b
papa.txt
……….
d:\WINLAB\papa\math\strong>type papa.txt
Папа у Васи силен в математике,
Учится папа за Васю весь год,
Где это видано, где это слыхано,
Папа решает, а Вася сдает?
d:\WINLAB\papa\math\strong>del papa.txt
d:\WINLAB\papa\math\strong>copy *1.txt+*2.txt+*3.txt+*4.txt papa.txt
d:\WINLAB\papa\math\strong>type papa.txt
d:\WINLAB\papa\math\strong>del papa.txt
d:\WINLAB\papa\math\strong>copy *.txt papa.txt
d:\WINLAB\papa\math\strong>type papa.txt
Папа у Васи силен в математике,
Учится папа за Васю весь год,
Где это видано, где это слыхано,
Папа решает, а Вася сдает?
d:\WINLAB\papa\math\strong>
			

Перемещение одного и более файлов и папок осуществляется командой MOVE (Пример 1.23) в формате (где «назначение» – путь к новому местоположению файл/файлов):

MOVE [/Y | /-Y] [диск:][путь]файл1[,файла2...] назначение


Команда MOVE может также служить для переименования папок, будучи записанной в формате:

MOVE [/Y | /-Y] [диск:][путь]имя_папки новое_имя_папки


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


Пример 1.23. Вывод текстового файла на экран

D:\WINLAB>cd papa\math\strong
d:\WINLAB\papa\math\strong>tree .. /f
D:\WINLAB\PAPA\MATH
├───strong
│      papa.txt
│      papa1.txt
│      papa2.txt
│      papa3.txt
│      papa4.txt
│
└───study
      papa2.txt
d:\WINLAB\papa\math\strong>move ..\study\papa2.txt
Заменить d:\WINLAB\papa\math\strong\papa2.txt
 [Yes (да)/No (нет)/All (все)]: y
Перемещено файлов:         1.
d:\WINLAB\papa\math\strong>tree .. /f
D:\WINLAB\PAPA\MATH
├───strong
│      papa.txt
│      papa1.txt
│      papa2.txt
│      papa3.txt
│      papa4.txt
└───study
d:\WINLAB\papa\math\strong>
		

Наиболее мощным инструментом копирования файлов, директорий и структур каталогов является утилита XCOPY. Самое простое применение XCOPY – это копирование непустых каталогов (с файлами и подкаталогами) – то, что невозможно выполнить при помощи команды COPY. Например, можно скопировать каталог STRONG в рабочий каталог под именем BACKUP (Пример 1.24).


Пример 1.24. Копирование директорий

d:\WINLAB>tree . /f
D:\WINLAB
└───papa
    └───math
        └───strong
               papa.txt
               papa1.txt
               papa2.txt
               papa3.txt
               papa4.txt
d:\WINLAB>xcopy papa\math\strong  backup\
Скопировано файлов: 5.
d:\WINLAB>tree . /f
D:\WINLAB
├───backup
│      papa.txt
│      papa1.txt
│      papa2.txt
│      papa3.txt
│      papa4.txt
└───papa
d:\WINLAB>
		

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

Формат вызова утилиты XCOPY позволяет реализовать гибкую и точную настройку копирования данных:

XCOPY источник [целевой_объект] [/A | /M] [/D[:дата]] [/P] [/S [/E]] [/V] [/W] [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U] [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z] [/B] [/EXCLUDE:файл1[+файл2][+файл3]...]

/A – Копирование только файлов с архивным атрибутом.

/M – Копирование со снятием архивного атрибута;

/D:m-d-y – Копирование файлов, измененных не ранее указанной даты. Если дата не указана, заменяются файлы, более старые, чем исходные.

/EXCLUDE:файл1[+файл2][+файл3] – Список файлов, содержащих исключающие строки. Если какая-либо строка совпадает с любой частью абсолютного пути к копируемому файлу, то файл исключается из операции копирования.

/P – Вывод запросов перед созданием каждого нового файла.

/S – Копирование только непустых каталогов с подкаталогами.

/E – Копирование каталогов с подкаталогами, включая пустые.

/V – Проверка размера каждого нового файла.

/W – Вывод запроса на нажатие клавиши перед копированием.

/C – Копирование вне зависимости от наличия ошибок.

/I – Если целевой объект не существует и копируется несколько файлов, считается, что целевой объект задает каталог.

/Q – Запрет вывода имен копируемых файлов.

/F – Вывод полных имен исходных и целевых файлов.

/L – Вывод имен копируемых файлов.

/G – Копирование зашифрованных файлов в целевой каталог, не поддерживающий шифрование.

/H – Копирование, среди прочих, скрытых и системных файлов.

/R – Перезапись файлов, предназначенных только для чтения.

/T – Создание структуры каталогов без копирования файлов.

/U – Копирование только уже имеющихся файлов.

/K – Копирование атрибутов файлов.

/N – Использование коротких имен при копировании.

/O – Копирование сведений о владельце и данных ACL.

/X – Копирование параметров аудита файлов.

/Y – Подавление запроса подтверждения перезаписи файлов.

/-Y – Запрос подтверждения на перезаписи файлов.

/Z – Копирование сетевых файлов с возобновлением.

/B – Символическая ссылка вместо целевого объекта.

/J – Копирование с использованием небуферизованного ввода/вывода. Рекомендуется для очень больших файлов.