Поделиться через


xcopy

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

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

Syntax

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]

Parameters

Parameter Description
<Источник> Required. Указывает расположение и имена файлов, которые требуется скопировать. Этот параметр должен включать диск или путь.
[<Назначение>] Указывает назначение файлов, которые требуется скопировать. Этот параметр может включать букву диска и двоеточие, имя каталога, имя файла или комбинацию из них.
/w Отображает следующее сообщение и ожидает ответа перед началом копирования файлов:
Нажмите любой ключ, чтобы начать копирование файлов.
/p Запрашивает подтверждение того, нужно ли создать каждый целевой файл.
/c Ignores errors.
/v Проверяет каждый файл так же, как он записывается в целевой файл, чтобы убедиться, что целевые файлы идентичны исходным файлам.
/q Подавляет отображение xcopy сообщений.
/f Отображает имена исходных и целевых файлов во время копирования.
/l Создает список файлов, которые копируются, но не копируются.
/g Создает расшифрованные файлы назначения , если место назначения не поддерживает шифрование.
/d [:MM-DD-YYYY] Копирует исходные файлы, измененные только по указанной дате или после нее. Если значение MM-DD-YYYY не указано, xcopy копируются все исходные файлы, которые новее существующих файлов назначения . Этот параметр командной строки позволяет обновлять измененные файлы.
/u Копирует файлы из источника , которые существуют только в месте назначения .
/i Если source является каталогом или содержит подстановочные знаки, а destination не существует, предполагается, xcopy что destination указывает имя каталога и создает новый каталог. 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 символа). Целевой файловой системой может быть FAT или NTFS.
/o Копирует сведения о владении файлами и списке управления доступом (DACL).
/x Копирует файлы настроек аудита и информацию о системном списке доступа (SACL) (подразумевается /o).
/exclude:FileName1[+[FileName2]][+[FileName3]( )] Указывает список файлов. Необходимо указать по крайней мере один файл. Каждый файл содержит строки поиска с каждой строкой в отдельной строке в файле. Если любая из строк соответствует любой части абсолютного пути к копируемым файлам, этот файл исключается из копирования. Например, указание строки obj исключит все файлы в каталоге obj или все файлы с расширением .obj .
/y Подавляет запрос на подтверждение того, что вы хотите перезаписать существующий целевой файл.
/-y Запрашивает подтверждение того, что вы хотите перезаписать существующий целевой файл.
/z Копирует по сети в режиме перезапуска.
/b Копирует символьную ссылку вместо файлов. Этот параметр появился в Windows Vista®.
/j Копирует файлы без буферизации. Рекомендуется для очень больших файлов. Этот параметр был добавлен в Windows Server 2008 R2.
/compress Запрос сетевого сжатия во время передачи файлов, где это применимо.
/[-]sparse Включает или отключает сохранение разреженного состояния файлов во время процесса копирования. Если указаны оба параметра, /-sparse переопределяет /sparse.
/noclone Не пытается клонирование блоков в качестве оптимизации.
/? Отображает справку в командной строке.

Remarks

  • Using /z

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

  • Использование /y в переменной окружения COPYCMD.

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

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

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

  • Appending files

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

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

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

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

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

    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 Так как команда копирует диски, отслеживаемые по треку, исходные и целевые диски должны иметь одинаковый формат. Эта xcopy команда не имеет этого требования. Используйте xcopy , если вам не нужна полная копия образа диска.

  • Ошибка нехватки памяти

    Ошибка "недостаточно памяти" может возникать при выполнении xcopy копирования файла или папки, путь к имени файла которого превышает 255 символов.

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

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

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

Examples

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

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.