Копирование файлов через командную строку. Команда xcopy: параметры

Команда COPY при работе в командной строке позволяет копировать один или несколько файлов. Команда имеет синтаксис: COPYисточник[+ источник [+ ...]][результат ]. Источником является имя копируемого файла, а результатом является каталог, в который будет помещена копия этого файла и/или имя создаваемого файла.

Для примера, создадим на диске «С» какой-нибудь файл (я создал текстовый файл «robot.txt»), а на диске «D» какую-нибудь папку (я создал папку «folder1»). Тогда команда для копирования файла «robot.txt» в папку «folder1» выглядит так: copy robot.txt d:\folder1

Если необходимо скопировать файл, изменив при этом его имя, необходимо записать следующую команду: copy robot.txt d:\folder1\file.txt В этом случае, файл «robot.txt» будет скопирован в папку «folder1», но уже с именем «file.txt».

Для того чтобы скопировать все файлы с выбранным расширением, необходимо вместо названия файла поставить звездочку «*». Например, создадим на диске «С» какую-нибудь папку (я создал папку «papka») и скопируем в нее все текстовые файлы из папки «folder1», расположенной на диске «D». Команда будет иметь вид: copy d:\folder1\*.txt c:\papka

Если в качестве [результата] не указывать каталог, то команда copy скопирует файл (или файлы) и поместит их в текущем каталоге. При этом скопированные файлы будут иметь то же имя, дату и время создания, что и исходный файл. Например, создадим в папке «folder1», расположенной на диске «D» текстовый файл с именем «robot1.txt». После этого в командной строке изменим текущий каталог с «C:\>» на «C:\Papka». Тогда команда copy d:\folder1\robot1.txt скопирует файл «robot1.txt» из папки «folder1» и поместит его в текущем каталоге, т.е. в папку «papka», расположенную на диске «C». Причем, имя, дата и время создания скопированного файла будет идентично исходному файлу.

Для того чтобы скопировать все файлы из определенного каталога, необходимо вместо названия файла поставить звездочку «*» и вместо расширения файла поставить звездочку «*». Например, создадим в папке «folder1» несколько файлов, имеющих различные расширения (документ Word, архив Rar и т.д.). Тогда команда для копирования всех файлов из папки «folder1» на диск «C» будет выглядеть: copy d:\folder1\*.* c:\


[Источником] или [результатом] копирования могут выступать не только файлы, но и различные устройства компьютера. В Windows поддерживаются следующие имена устройств:

  • LPT1 – LPT3 (параллельные порты).
  • COM1 – COM3 (последовательные порты).
  • CON (терминал, при выводе это экран компьютера, при вводе – клавиатура).
  • PRN (принтер).
  • AUX (устройство, подсоединяемое к последовательному порту 1).

Например, с помощью командной строки и команды «copy» можно создать текстовый файл и записать в него информацию : copy con f1.txt . Команда copy con f1.txt создаст текстовый файл «f1.txt» и скопирует в него символы, которые вы будете вводить с клавиатуры.

После ввода команды copy con f1.txt нажимаем Enter и вводим слова, которые необходимо сохранить (я ввел command com). После ввода необходимо поставить признак конца файла (нажать Ctrl+Z).
C помощью команды copy можно объединять несколько файлов в один файл . Например, создадим на диске «C» два файла f2.txt и f3.txt (файл f1.txt мы создали ранее) и запишем в эти файлы какую-нибудь информацию. Тогда команда copy f1.txt+f2.txt+f3.txt d:\f4.txt скопирует содержимое файлов «f1.txt», «f2.txt», «f3.txt» в файл «f4.txt», который будет автоматически создан на диске «D».

Если при объединении файлов не указывать файл - [результат], то вся информация будет сохранена в первом файле. Например, команда copy f1.txt+f2.txt+f3.txt добавит к содержимому файла f1.txt содержимое файлов f2.txt и f3.txt

Ключ /Y отключает вывод сообщения о замене файлов. По умолчанию, при копировании файлов, если такой файл существует, то на экран выводится сообщение с предупреждением о замене. Пользователь может согласиться с заменой (нажать Y) или не согласиться (нажать N). Ключ /Y отключает это сообщение и копирование происходит сразу. Для примера создадим на диске «C» файл vov.txt и скопируем его на диск «D»: copy vov.txt d:\
Затем скопируем этот файл еще раз. При этом выводится сообщение «Заменить d:\vov.txt ] [результат ]

Давайте начнем:

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

/Y | /-Y – если выбран первый параметр, то будут отсутствовать запросы системы на подтверждение во время копирования (проще говоря, если придется топкой 1000 файлов копировать, то на каждый не будет выпрыгивать надоедливое “а вы уверены, или, может, другу позвоните? ”), понятно, что второй параметр как раз то включает запрос подтверждения.

/Z – позволяет копировать данные по сети, кстати, в предыдущих вариантах данной утилиты этого ключа не наблюдалось.

– указывает, что файл является текстовым, если мы укажем данный параметр, то копирование прервется на метке конца файла ASCII код 26.

Если же данный параметр указан в самом конце, то эффект совсем другой. Произойдет полное копирование документа, но в копии будет добавлена метка конца файла если ее не было. Как результат, можете попробовать поэкспериментировать с pdf документом (my_file.pdf – размер документа составляет 247217 байт):

copy my_file.pdf/A new_file.pdf – на выходе мы получим документ new_file.pdf размером в 2538 байт.

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

/V – данный параметр включает проверку правильности копирования, сравнивая данные после завершения процедуры.

И так командная строка, копирование файлов и парочка примеров:

Копирование через командную строку файла 123.txt из текущего каталога в каталог D:\NEW под тем же именем:

COPY 123.txt D:\NEW

Копирование файла 123.txt из текущего каталога в каталог D:\NEW под новым именем new.txt:

COPY 123.txt D:\NEW\new.txt

Копирование всех документов с расширением txt с диска D:\ в каталог My Data на диске C:

COPY D:\*.txt "С:\My Data"

Допустим, мы находимся в каталоге D:\NEW и нам надо копирнуть в него все данные из каталога C:\DATA, в таком случае достаточно прописать следующий синтаксис:

COPY C:\DATA *.*

Используя командную строку, копируемые файлы можно склеить. Для этих целей достаточно использовать знак плюса «+», например:

COPY 1.txt +2.txt 3.txt – в данном примере содержимое документов 1.txt и 2.txt было объединено в 3.txt. Стоит помнить, что по дефолту, утилита COPY воспринимает данные как текстовые.

Вот пример с двоичными данными:

COPY /В *.dat all.dat – в данном варианте все данные с расширением dat из текущей папки были объединены в один файл all.dat.

Вообще, используя символ плюса «+» и мысли типа «а что если», можно проделать парочку экспериментов. Также стоит помнить ряд моментов:

Если название целевого объекта совпадает с одним из копируемых (кроме первого), то исходное содержимое целевого объекта будет утеряно.

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

COPY 1.txt +, – данная конструкция позволяет присвоить объекту 1.txt текущую дату без его модификации.

Утилита COPY по своему первенству содержит ряд недостатков:

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

В связи с такими неудобствами, умные люди подумали, и прибавили букву Х к названию COPY, чем решили массу проблем, создав .

Командная строка REPLACE

Фактически, отличие данной утилиты в том, что она умеет заменять данные. Синтаксис довольно простой и понятный:

REPLACE [диск1:][путь1]имя_файла [диск2:] [путь2]

REPLACE [диск1:][путь1]имя_файла [диск2:] [путь2]

[диск1:] [путь1]имя_файла – определяем местонахождении копируемого объекта, или объектов.

[диск2:] [путь2] - определяем местонахождении объекта-результата. Как видно, имена замещаемых объектов задавать нельзя.

– добавляем в каталог-результат только новые объекты из каталога-результата (без перезаписи). Этот ключ нельзя использовать с ключами /S и / U .

– выводится запрос на подтверждение перед заменой целевого или добавлением исходного файла.

/R – замещение не только обычных, но и защищенных от записи документов.

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

/W – ожидание вставки диска перед началом выполнения

/U – режим обновления, то есть будут заменены только те объекты, которые имеют более раннюю дату модификации. Несовместимость с ключом /A .

Replace D:\Data\my_file.txt D:\Work – в папке Work заменяем файл my_file.txt на D:\Data\my_file.txt

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


Утилита XCopy - одно из самых старых и полезных средств перемещения данных. Назначение XCopy состоит в изменении местоположения папок. Проводник во многом заменил эту утилиту, и по возможности мы рекомендуем пользоваться именно им. Тем не менее, существуют несколько важных применений утилиты XCopy:

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

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

Как пользоваться?

Утилита XCopy используется так же, как и стандартная команда копирования - с указанием исходных и целевых файлов. Например, чтобы скопировать все файлы из папки MyDir диска C в одноименную папку диска D, введите команду:

XCopy C:\MyDir\*.* D:\MyDiг\*.*

Затем нажмите клавишу Enter. Утилита XCopy поддерживает набор ключей, наиболее важные из которых перечислены ниже.

Дополнительные ключи

/A и /M - копируются только архивные файлы. С помощью этих ключей утилиту XCopy можно использовать для архивации. Ключ /M также сбрасывает архивный атрибут с копируемых файлов, что указывает на создание их резервной копии. Таким образом, при использовании XCopy как приложения для архивации следует применять исключительно ключ /M.

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

/G - позволяет копировать зашифрованные файлы в место, не поддерживающее шифрование. Эта функция дешифрирует файл, и для ее выполнения вы должны иметь соответствующие системные права.

/H - копирует скрытые и системные файлы.

/K - копирует атрибуты файлов вместе с самими файлами. В обычном режиме утилита XCopy лишает файлы атрибута «только чтение».

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

/R - перезаписывает файлы с атрибутом «только чтение» при копировании. Используйте этот ключ при архивации, чтобы версии файлов, защищенных от записи, обновлялись в резервной копии.

/S и /E - копируют файлы не только из текущей папки, но и из всех вложенных в нее папок. Ключ /E также копирует пустые вложенные папки. Указанные ключи позволяют не только выполнить копирование файлов, но и сохранить структуру папки.

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

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

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

Команда COPY

Источник [+ источник [+ ...]] [результат ]:

источникИмена одного или нескольких копируемых файлов.

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

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

результатКаталог и/или имя для конечных файлов.

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

/N Использование, если возможно, коротких имен при копировании файлов, чьи имена не удовлетворяют стандарту 8.3.

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

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

Ключ /Y можно установить через переменную среды COPYCMD.

Ключ /-Y командной строки переопределяет такую установку.

По умолчанию требуется подтверждение, если только команда COPY не выполняется в пакетном файле

Команда XCOPY

Чтобы объединить файлы, укажите один конечный и несколько исходных файлов, используя подстановочные знаки или формат "файл1+файл2+файл3+...". Копирование файлов и структур каталогов.

источник [результат] ] ]

[+файл3]...]

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

результат Местоположение и/или имена новых файлов.

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

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

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

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

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

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

/E Копирование каталогов с подкаталогами (в том числе пустых).

Эквивалентен сочетанию ключей /S /E. Совместим с ключом /T. /V

Сравнение конечных файлов с исходными.

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

/C Продолжение копирования, независимо от наличия ошибок.

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

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

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

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

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

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

/T Создание структуры каталогов (кроме пустых каталогов) без копирования файлов. Если требуется создать пустые каталоги и подкаталоги, используйте сочетание ключей /T /E.

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

/K Копирование атрибута "Только чтение" (обычно он сбрасывается).

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

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

/X Копирование параметров аудита файлов (требует /O).

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

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

Ключ /Y можно установить через переменную среды COPYCMD. Ключ /-Y командной строки переопределяет такую установку.

Пример: 1. Копирование text.txt в A:ЗаданияНовая

2. При копировании имя файла будет изменено

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

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

Работа с файлами в командной строке

Создание файла

Для того чтобы создать файл, можно использовать команду touch . На самом деле, предназначение данной команды — изменение даты последнего доступа к файлу и даты последнего изменения файла.

Выполнение команды без параметров touch путь_до_файла/file обновит у файла дату последнего доступа (last access time) и дату последнего редактирования (last modification time). Если же такого файла не существует, то будет создан пустой файл с указанным в команде именем.

Чтобы обновить только дату доступа, надо использовать параметр ‑a , чтобы только дату изменения — параметр ‑m . Также можно установить не текущую, а произвольную дату, используя параметр ‑t , и указав после него дату в формате MMDDhhmm[.SS] , например, 201203201359.11 , что соответствует 2012 году 03 месяцу 20 числу 13 часам 59 минутам 11 секундам.

Создание директории

Для создания директорий существует команда mkdir (от англ. m ak e dir ectory).

Синтаксис: mkdir имя_директории... , где имя директории — это путь и имя создаваемой директории. Можно указать несколько директорий через пробел.

Если в пути до создаваемой директории присутствуют несуществующие директории, то директория создана не будет, а будет выведено сообщение об ошибке. Для того чтобы создать несколько вложенных друг в друга директорий, используется параметр ‑p . Например, команда:

Mkdir -p folder1/folder2/folder3

создаст все три директории folder1, folder2, folder3 в случае, если они не существуют.

По умолчанию директории создаются с набором прав доступа 755 ; чтобы создать директорию с иным набором прав, используется параметр ‑m права_доступа, например так: mkdir ‑m 750 folder .

Перемещение и изменение имени файла или директории

Имена файлов или директорий хранятся не в самих этих файлах, а являются записями в таблице, которая содержит список с именами файлов и директорий, находящихся внутри этой директории . Таким образом, при переименовании файла или его перемещении в другую директорию выполняется одна и та же операция — редактирование таблицы директории со списком файлов. Поэтому для перемещения и изменения имени файла используется одна и та же команда mv (от англ. m ov e).

Синтаксис команды: mv исходный_файл новый_файл, где исходный файл — это путь до файла или директории и имя файла или директории, которые вы хотите переместить, а новый файл — это путь до места назначения, куда необходимо переместить файл или директорию, и новое имя для перемещаемого файла или директории.

mv /Users/ixrevo/Downloads/hello.txt /Users/ixrevo/Desktop/hi.txt в этом примере мы перемещаем файл hello.txt из директории /Users/ixrevo/Downloads/ на рабочий стол /Users/ixrevo/Desktop/ , а имя перемещённого файла будет hi.txt (содержимое файла останется без изменений).

Учитывая что нашей текущей директорией была /Users/ixrevo/ , можно было бы указать относительный путь к файлу:
cp Downloads/hello.txt Desktop/hi.txt

Подробнее о текущей директории вы можете прочитать в статье «Навигация по файловой системе в командной строке» , а про относительные и абсолютные пути — в статье «Как устроена структура файловой системы Mac OS X» .

Также можно переименовать файл или директорию, не перемещая:

Mv hello.txt hi.txt

Или переместить, не переименовывая:

Mv /Users/ixrevo/Downloads/hello.txt /Users/ixrevo/Desktop/

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

Ещё один способ использования команды mv удобен для перемещения нескольких файлов или директорий: mv исходный_файл_1 исходный_файл_2 ... директория, где исходный файл_1, исходный файл_2 и т.д. — пути и имена файлов или директорий, которые необходимо переместить, а директория — это путь до директории, куда необходимо переместить файлы, указанные ранее.

Копирование файла

Для копирования файлов и директорий существует команда cp , что является сокращением от c op y .

Синтаксис команды: cp исходный_файл новый_файл, где исходный файл — это путь и имя файла, который необходимо скопировать, а новый файл — это путь до создаваемой копии файла и имя этой копии.

Например, выполнив команду:

Cp /Users/ixrevo/Downloads/hello.txt /Users/ixrevo/Desktop/hi.txt

Мы скопируем файл hello.txt из директории /Users/ixrevo/Downloads/ на рабочий стол /Users/ixrevo/Desktop/ , а имя у копии файла будет hi.txt .

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

Cp исходный_файл_1 исходный_файл_2 ... директория

Исходный файл_1, исходный файл_2 и т.д. — пути до файлов и имена файлов, которые необходимо скопировать, а директория — это путь до директории, куда вы хотите скопировать файлы, указанные ранее.

Копирование директории

Для копирования директорий команда cp используется с параметром ‑R или ‑r (от англ. r ecursive). Команда cp , выполненная с этим параметром, если в качестве первого аргумента была указана директория, скопирует директорию и всё её содержимое, то есть все вложенные директории и файлы.

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

Cp -r копируемая_директория место_назначения

При попытке скопировать директорию без параметра ‑r , директория скопирована не будет, а будет выведено сообщение об ошибке.

Удаление файла

Для того чтобы удалять файлы, используется команда rm (от англ. r emov e). Синтаксис: rm файл... , где файл — это путь и имя файла, который необходимо удалить. Также можно указать несколько файлов для удаления.

Удаление директории

Существует несколько способов удаления директорий. Например, можно использовать команду

Rmdir директория...

директория — это путь и имя директории, которую необходимо удалить. Также можно указать несколько директорий для удаления.

Если директория не пустая, то есть содержит вложенные файлы и/или папки, то команда rmdir не сможет удалить эту директорию и выдаст сообщение об ошибке.

Аналогично команде rmdir действует команда rm с параметром ‑d .

Конечно, удалять каждый раз сначала содержимое директории, а потом её саму не очень интересно, но, к счастью, есть способ удалить директорию вместе со всем её содержимым. Для этого выполните команду rm с параметром ‑R или ‑r , и тогда все файлы и директории, указанные в команде rm ‑r директория... , будут удалены вместе со всеми вложенными директориями. Но будьте осторожны, не удалите этой командой что-нибудь нужное, особенно учитывая, что в командной строке нет корзины и файлы с директориями удаляются необратимо.