xcopy

Копирует файлы и каталоги, включая подкаталоги.

В разделе Примеры показан принцип использования этой команды.

Синтаксис

Xcopy <Source> [<Destination>] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d [:MM-DD-YYYY]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a | /m}] [/n] [/o] [/x] [/exclude:FileName1[+[FileName2]][+[FileName3]]] [{/y | /-y}] [/z] [/b] [/j] [/compress]

Параметры

Параметр Описание
<Source> Обязательный. Указывает расположение и имена файлов, которые требуется скопировать. Этот параметр должен содержать диск или путь.
[<Назначение>] Указывает назначение файлов, которые требуется скопировать. Этот параметр может включать букву диска и двоеточие, имя каталога, имя файла или их сочетание.
/W Отображает следующее сообщение и ожидает ответа перед началом копирования файлов:
Нажмите любую клавишу, чтобы начать копирование файлов.
/p Запрашивает подтверждение создания каждого целевого файла.
/C Игнорирует ошибки.
/v Проверяет каждый файл по мере записи в целевой файл, чтобы убедиться, что целевые файлы идентичны исходным файлам.
/q Подавляет отображение xcopy сообщений.
/f Отображает имена исходных и целевых файлов при копировании.
/l Создает список файлов, которые необходимо скопировать, но не копирует их активно.
Создает расшифрованные файлы назначения , если назначение не поддерживает шифрование.
/d [:ММ-ДД-ГГГГ] Копирует исходные файлы, измененные только в указанную дату или после нее. Если значение MM-ДД-ГГГГ не указано, копирует все исходные файлы, xcopy которые новее существующих целевых файлов. Этот параметр командной строки позволяет обновлять измененные файлы.
/U Копирует файлы из источника , которые существуют только в целевом расположении .
/i Если источник является каталогом или содержит подстановочные знаки, а назначение не существует, предполагается, xcopy что назначение указывает имя каталога и создает новый каталог. xcopy Затем копирует все указанные файлы в новый каталог. По умолчанию предлагает указать, xcopy является ли назначение файлом или каталогом.
/s Копирует каталоги и подкаталоги, если они не пусты. Если параметр /s опущен, xcopy работает в одном каталоге.
/e Копирует все подкаталоги, даже если они пусты. Используйте /e с параметрами командной строки /s и /t .
/t Копирует только структуру подкаталога (т. е. дерево), а не файлы. Чтобы скопировать пустые каталоги, необходимо включить параметр командной строки /e .
/K Копирует файлы и сохраняет атрибут только для чтения в целевых файлах, если они присутствуют в исходных файлах. По умолчанию xcopy удаляет атрибут только для чтения.
/r Копирует файлы только для чтения.
/h Копирует файлы со скрытыми атрибутами и атрибутами системных файлов. По умолчанию xcopy не копирует скрытые или системные файлы
/a Копирует только исходные файлы, для которых заданы атрибуты архивного файла. Параметр /a не изменяет атрибут файла архива исходного файла. Сведения о том, как задать атрибут файла архива с помощью атрибута attrib, см. в разделе Связанные ссылки.
/m Копирует исходные файлы, для которых заданы атрибуты архивного файла. В отличие от /a, параметр /m отключает атрибуты архивных файлов в файлах, указанных в источнике. Сведения о том, как задать атрибут файла архива с помощью атрибута attrib, см. в разделе Связанные ссылки.
/n Создает копии, используя короткие имена файлов или каталогов NTFS. Параметр /n требуется при копировании файлов или каталогов из тома NTFS в том FAT или если в конечной файловой системе требуется соглашение об именовании файловой системы FAT (т. е. 8,3 символа). Файловая система destinatio* может быть FAT или NTFS.
/o Копирует сведения о владельце файла и списке управления доступом на уровне пользователей (DACL).
/x Копирует сведения о параметрах аудита файла и списке управления доступом системы (SACL) (подразумевает /o).
/exclude:FileName1[+[Имя_файла2]][+[Имя_файла3]( )] Указывает список файлов. Необходимо указать хотя бы один файл. Каждый файл будет содержать строки поиска, каждая строка которых находится в отдельной строке файла. Если какая-либо из строк совпадает с любой частью абсолютного пути копируемого файла, этот файл будет исключен из копирования. Например, если указать строку obj , будут исключены все файлы под каталогом obj или все файлы с расширением OBJ .
/Y Подавляет запрос на подтверждение перезаписи существующего целевого файла.
/-Y Запрашивает подтверждение перезаписи существующего целевого файла.
/z Копирует по сети в режиме перезапуска.
/b Копирует символьную ссылку вместо файлов. Этот параметр появился в Windows Vista®.
/J Копирует файлы без буферизации. Рекомендуется для очень больших файлов. Этот параметр был добавлен в Windows Server 2008 R2.
/Сжать Запросите сжатие сети во время передачи файла, если это применимо.
/? Отображение справки в командной строке.

Комментарии

  • Использование /z

    Если вы потеряете подключение на этапе копирования (например, если сервер, перешедший в автономный режим, разорвёт подключение), оно возобновляется после восстановления подключения. /z также отображает процент завершения операции копирования для каждого файла.

  • Использование /y в переменной среды COPYCMD.

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

  • Копирование зашифрованных файлов

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

  • Добавление файлов

    Чтобы добавить файлы, укажите один файл для назначения, а несколько файлов для источника (то есть с помощью подстановочных знаков или формата file1+file2+file3).

  • Значение по умолчанию для назначения

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

  • Указание того, является ли назначение файлом или каталогом

    Если назначение не содержит существующий каталог и не заканчивается обратной косой чертой (), появится следующее сообщение:

    Does <Destination> specify a file name or directory name on the target(F = file, D = directory)?
    

Нажмите клавишу F, чтобы скопировать файл или файлы в файл. Нажмите клавишу D, чтобы скопировать файл или файлы в каталог.

Это сообщение можно отключить с помощью параметра командной строки /i , который позволяет xcopy предположить, что назначением является каталог, если источником является несколько файлов или каталогов.

  • Использование команды для xcopy задания атрибута архива для файлов назначения

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

  • **Сравнение xcopy** и diskcopy

    Если у вас есть диск, содержащий файлы в подкаталогах, и вы хотите скопировать его на диск другого формата, используйте xcopy команду вместо diskcopy. Так как команда diskcopy копирует диски track by track, исходный и целевой диски должны иметь одинаковый формат. Команда xcopy не имеет этого требования. Используйте xcopy , если вам не требуется полная копия образа диска.

  • Коды выхода для xcopy

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

    Код выхода Описание
    0 Файлы были скопированы без ошибок.
    1 Файлы для копирования не найдены.
    2 Чтобы завершить xcopyработу, пользователь нажал клавиши CTRL+C.
    4 Произошла ошибка инициализации. Недостаточно памяти или места на диске, либо вы ввели недопустимое имя диска или недопустимый синтаксис в командной строке.
    5 Произошла ошибка записи на диск.

Примеры

1. Чтобы скопировать все файлы и подкаталоги (включая все пустые подкаталоги) с диска A на диск B, введите:

xcopy a: b: /s /e

2. Чтобы включить любые системные или скрытые файлы в предыдущем примере, добавьте параметр командной строки /h следующим образом:

xcopy a: b: /s /e /h

3. Чтобы обновить файлы в каталоге \Reports с файлами в каталоге \Rawdata, которые были изменены с 29 декабря 1993 г., введите:

xcopy \rawdata \reports /d:12-29-1993

4. Чтобы обновить все файлы, существующие в \Reports в предыдущем примере, независимо от даты, введите:

xcopy \rawdata \reports /u

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

xcopy \rawdata \reports /d:12-29-1993 /l > xcopy.out

Файл xcopy.out содержит список всех копируемых файлов.

6. Чтобы скопировать каталог \Customer и все подкаталоги в каталог \\Public\Address на сетевом диске H:, сохраните атрибут только для чтения и появится запрос при создании нового файла в H:, введите:

xcopy \customer h:\public\address /s /e /k /p

7. Чтобы выполнить предыдущую команду, убедитесь, что xcopy каталог \Address не существует, и подавьте сообщение, которое появляется при создании нового каталога, добавьте параметр командной строки /i следующим образом:

xcopy \customer h:\public\address /s /e /k /p /i

8. Вы можете создать пакетную программу для выполнения xcopy операций и использовать команду batch if для обработки кода выхода при возникновении ошибки. Например, следующая пакетная программа использует заменяемые параметры для xcopy параметров источника и назначения:

@echo off
rem COPYIT.BAT transfers all files in all subdirectories of
rem the source drive or directory (%1) to the destination
rem drive or directory (%2)
xcopy %1 %2 /s /e
if errorlevel 4 goto lowmemory
if errorlevel 2 goto abort
if errorlevel 0 goto exit
:lowmemory
echo Insufficient memory to copy files or
echo invalid drive or command-line syntax.
goto exit
:abort
echo You pressed CTRL+C to end the copy operation.
goto exit
:exit

Чтобы использовать предыдущую пакетную программу для копирования всех файлов в каталоге C:\Prgmcode и его подкаталогах на диск B, введите:

copyit c:\prgmcode b:

Интерпретатор команд заменяет C:\Prgmcode на %1 и B: для %2, а затем использует xcopy с параметрами командной строки /e и /s . Если xcopy возникает ошибка, пакетная программа считывает код выхода и переходит к метке, указанной в соответствующей инструкции IF ERRORLEVEL , а затем выводит соответствующее сообщение и выходит из пакетной программы.

9. В этом примере копируются все непустые каталоги, а также файлы со связанным расширением после символа звездочки.

xcopy .\toc*.yml ..\..\Copy-To\ /S /Y

rem Output example.
rem  .\d1\toc.yml
rem  .\d1\d12\toc.yml
rem  .\d2\toc.yml
rem  3 File(s) copied

В предыдущем примере это конкретное значение исходного параметра .\toc*.yml копирует те же 3 файла, даже если были удалены два символа пути .\ . Однако файлы не копируются, если из исходного параметра удален подстановочный знак звездочки, что делает его только .\toc.yml.