XCOPY - описание команды и примеры использования

  • 29.01.2020
  • 91 276
  • 15
  • 02.11.2020
  • 33
  • 31
  • 2
XCOPY - описание команды и примеры использования

Описание

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

Синтаксис

xcopy источник [результат] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:мм-дд-гггг]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a|/m}] [/n] [/o] [/x] [/exclude:файл1[+[файл2]][+[файл3]] [{/y|/-y}] [/z]

Параметры

Параметр Описание
источник Обязательный параметр. Задает местонахождение и имена файлов для копирования. Параметр должен задавать или диск, или путь.
результат Задает место, куда будут скопированы файлы. Параметр может включать имя диска с двоеточием, имя каталога, имя файла или их комбинацию.
/w Выводит следующее сообщение с ожиданием подтверждения начала копирования: Нажмите любую клавишу, чтобы начать копирование файлов
/p Запрашивает подтверждение при создании каждого файла-результата.
/c Игнорирует ошибки.
/v Проверяет каждый скопированный файл на соответствие его оригиналу.
/q Отменяет вывод на экран сообщений команды xcopy.
/f Выводит имена исходных файлов и файлов-результатов в процессе копирования.
/l Отображает список копируемых файлов.
/g Создает незашифрованные файлы-результаты.
/d[:мм-дд-гггг] Копирует только файлы, измененные не ранее заданной даты. Если не включить значение мм-дд-гггг, команда xcopy копирует все файлы-источники, которые новее существующих файлов-результатов. Эта возможность позволяет обновлять только измененные файлы.
/u Копирует (обновляет) только те файлы-источники, которые уже существуют в каталоге результата.
/i Если источником является каталог или источник содержит подстановочные знаки и результат не существует, команда xcopy считает, что результат — это имя каталога, и создает новый каталог. Затем xcopy копирует все указанные файлы в новый каталог. По умолчанию команда xcopy запрашивает подтверждение, является ли параметр результат каталогом или файлом.
/s Копирует каталоги и подкаталоги, если они не пусты. Если параметр /s не задан, команда xcopy будет работать только с одним каталогом.
/e Копирует все подкаталоги, включая пустые. Параметр /e используется с параметрами /s и /t. /t Копирует только структуру подкаталога (т. е. дерево), а не файлы. Для копирования пустых каталогов следует задать ключ /e.
/k Копирует файлы с атрибутом "только для чтения" с сохранением этого атрибута для скопированных файлов, оригиналы которых имеют этот атрибут. По умолчанию команда xcopy удаляет атрибут "только для чтения".
/r Копирует файлы с атрибутом "только для чтения".
/h Копирует системные и скрытые файлы. По умолчанию команда xcopy не копирует системные и скрытые файлы.
/a Копирует только те файлы, которые имеют установленный атрибут «архивный». При использовании параметра /a атрибут "архивный" у исходных файлов не меняется.
/m Копирует только те файлы, которые имеют установленный атрибут «архивный». В отличие от параметра /a, параметр /m очищает атрибут «архивный» у скопированных файлов.
/n Копирует с использованием коротких имен файловой системы NTFS. Параметр /n требуется при копировании из файловой системы NTFS в файловую систему FAT или когда на диске-результате требуется использование соглашения об именах файлов как в файловой системе FAT (8.3). Файлы могут записываться в файловую систему FAT или NTFS.
/o Копирует сведения о принадлежности файлов и избирательной таблице управления доступом (DACL).
/x Копирует сведения о параметрах аудита файла и системной таблице управления доступом (SACL) (подразумевается наличие /p). /exclude:файл1[+[файл2]][+[файл3]] Определяет список файлов, содержащих строки.
/y Устраняет выдачу запроса на подтверждение перезаписи существующего конечного файла.
/-y Выдает запрос на подтверждение перезаписи существующего конечного файла.
/z Копирует по сети в режиме перезапуска.
/? Отображает справку в командной строке.

Примечания

    • Использование параметра /exclude
      Построчный вывод всех строк в каждом файле. При соответствии выведенной строки части пути копируемого файла, он исключается из процесса копирования. Например, если указана строка «\Obj\», исключается все файлы, расположенные в каталоге «Obj». Например, если указана строка «.obj», исключается все файлы с расширением .obj.
    • Использование параметра /z
      Если во время фазы копирования теряется сетевое подключение (например, если сервер переходит автономный режим, разрывая подключение), копирование возобновляется после восстановления подключения. Использование параметра /z команды вызывает также отображение доли (в процентах) завершенной операции копирования для каждого файла.
    • Использование параметра /y в переменной среде COPYCMD. Можно применять параметр /y в переменной среде COPYCMD. Эта настройка может быть переопределена использованием параметра /-y в командной строке. По умолчанию если команда copy выполняется не в пакетной программе, при замене требуется подтверждение.
    • Копирование зашифрованных файлов
      При копировании файлов на том, не поддерживающий шифрованную файловую систему (EFS), возникнет ошибка. Следует предварительно расшифровать файлы или копировать их на том, поддерживающий EFS.
    • Добавление файлов
      Чтобы объединить файлы, укажите один файл-результат, но несколько файлов-источников (с помощью подстановочных знаков или формата файл1+файл2+файл3).
    • Значение по умолчанию для результата
      Если параметр результат не задан, xcopy будет копировать файлы в текущий каталог.
    • Указание в качестве результата файла или каталога
      Если параметр результат не содержит существующий каталок или не заканчивается обратной чертой(\), выводится следующее сообщение:Что означает destination:
      имя файла или каталога
      (F = файл, D = каталог)?Нажмите F, если файл или файлы должны копироваться в файл. Нажмите D, если файл или файлы должны копироваться в каталог.Чтобы устранить вывод этого сообщения, используйте параметр /i. В результате чего, команда xcopy предполагает, что результат является каталогом, если источник престаляет собой несколько файлов или каталогов.
    • Использование команды xcopy для установки атрибута «архивный» для файлов результата
      Команда xcopy создает файлы с установленным атрибутом «архивный», независимо от состояния этого атрибута у исходных файлов.
    • Сравнение команд xcopy и diskcopy
      Команда xcopy должна быть использована вместо diskcopy при копировании файлов и подкаталогов на диск другого формата. Так как команда diskcopy копирует диски по дорожкам, требуется, чтобы исходный диск и диск-результат имели одинаковый формат. Для команды xcopy это требование не нужно. Обычно следует использовать команду xcopy, если только не требуется получить два диска с одинаковыми образами.
    • Коды завершения программы xcopy

Для анализа кодов завершения, выведенных командой xcopy, используйте параметр уровень_ошибки в командной строке if пакетных программ.

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

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

Примеры использования

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

xcopy a: b: /s /e

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

xcopy a: b: /s /e /h

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

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

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

xcopy \rawdata \reports /u

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

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

Список файлов, которые были бы скопированы, находится в файле Xcopy.out.

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

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

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

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

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

@echo off
rem COPYIT.BAT копирует все файлы во всех подкаталогах
rem исходного диска или каталога (%1) на другой диск

rem или в другой каталог (%2)

?? xcopy %1 %2 /s /e

??if errorlevel 4 goto lowmemory
?if errorlevel 2 goto abort
?if errorlevel 0 goto exit

??:lowmemory ?
echo Недостаточно памяти для копирования файлов,
задан недопустимый ?echo диск или ошибка в синтаксисе командной строки.
?goto exit
??
:abort ?
echo Нажата комбинация CTRL+C для остановки копирования.
?goto exit ?
?
:exit

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

copyit c:\prgmcode b:

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

Справочная информация


Была ли эта статья Вам полезна?

Комментарии к статье (15)

    • Роман

    Столкнулся недавно с такой задачей.

    Есть два хоста:
    Windows server 2012 r2 x64 сетевая карта tp-link tx201 - 2,5гбит/с (с сетевой папкой)
    и Windows 10 x64 сетевая карта tp-link tx201 - 2,5гбит/с - забирающая сторона
    Прямое соединение компов кабелем кат8.

    У каждого компа есть встроенные сетевые карты гигабитные к ним подключается кабель от роутера но работают в режиме 100мбит/с - для интернета.

    Суть вопроса: При копировании в оконном режиме скорость 60-120мбайт/с
    При копировании в консольном режиме (cmd) скорость 8-12мбайт/с - как увеличить скорость?(соответствует скорости 100мбит/с.)

    Трафик при копировании идет через скоростные карты ( tp-link tx201 - 2,5гбит/с) с обоих сторон при каждой попытке копирования.

    Пробовал выставлять метрики в ручную, задавать скорость и дуплекс в ручную - не помогло увеличить скорость копирования в консоли.

    Замерял скорость утилитой iperf3.1.1_64 скорость в районе ~2гбит/с

    В чем может быть затык такой низкой скорости в консоли?
    Интересует именно скорость в командной строке, так как все автоматизировано руками bat файлами - в "планировщике задач"
    (Использовал команды xcopy и robocopy с разными ключами)

    Вот и интересно - это ограничение консоли или какая то особенность?

    Может кто то сталкивался...

    • Ди

    Добрый день! Подскажите как должен выглядеть батник, который будет копировать из папки backup диска D свежий файл 7z (созданный в день копирования) в сетевую папку.

    • VALERIYA

    Добрый день. В примерах есть копирование всех файлов от определенной даты создания. А возможно скопировать только файлы с определенной датой создания.

    • Сергей

    Можно ли при копировании сделать ограничение по размеру файла?

    • Андрей

    Добрый день! У меня есть задача, необходим скрипт для резервного копирования по следующей схеме:
    число backup - 10
    c:\dir1 c:\user\dir2 в \\192.168.10.2\backup\dir C
    d:\test скопировать \\192.168.10.2\backup\dir D
    результат должен быть \\192.168.10.2\backup\dir C\хх.хх.2023.7z
    \\192.168.10.2\backup\dir D\xx.xx.2023.7z.
    Все это должно выполняться одним бантиком. Может кто сталкивался поделитесь или посоветуйте как сделать?

    • Ваш запрос вообще не имеет никакого отношения к XCOPY, но все же, вот bat файл, который будет выполнять описанную вами задачу:

      set dd=%DATE:~0,2%
      set mm=%DATE:~3,2%
      set yyyy=%DATE:~6,4%
      
      "C:\Program Files\7-Zip\7z.exe" a "\\192.168.10.2\backup\dir C\%dd%.%mm%.%yyyy%.7z" C:\dir1 C:\user\dir2
      "C:\Program Files\7-Zip\7z.exe" a "\\192.168.10.2\backup\dir D\%dd%.%mm%.%yyyy%.7z" d:\test

      Ну и само собой, у вас должен быть архиватор 7-Zip, который будет выполнять процедуру архивирования в архив формата 7z.

    • Дмитрий

    Можно ли исключить при копировании файлы с определенным расширением? Например копировать все кроме файлов *.txt ?

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

      .txt

      Сохраняем этот файл в любом удобном месте, и с любым именем (например - C:\Test\exclude.txt), и добавляем в конец команды xcopy параметр exclude, содержащий путь к данному файлу:

      xcopy C:\Test\1 C:\Test\2 /exclude:C:\Test\exclude.txt
    • johnny

    Как скопировать файл по сети без создания папки. А то почему то копирует с созданием папки.

    • Вообще, одиночный файл лучше копировать с помощью команды COPY - но если есть непреодолимое желание скопировать его при помощи XCOPY, то команда должна выглядеть вот так:

      echo F | xcopy \\SERVER\Share\file.txt C:\Temp\file.txt
    • Сергей

    Как сделать такой батник из папки где батник скопировать файл например в D:/Games

    • Здесь будет достаточно простой команды copy:

      copy file.txt D:\Games
    • Павел

    Добрый день!
    Подскажите пожалуйста.
    Мне необходимо скопировать целый список файлов txt и ini расширения. Для примера есть 4 файла: 003124010222132200001.txt
    003124010222132200001h.ini
    003124010222132200002.txt
    003124010222132200002h.ini
    Они должны с копироваться таким образом. Создать папку соответственно по названию txt файла и пометить туда файлы по 2 файла и на выходе должно получиться 2 папки 003124010222132200001 и 003124010222132200002. Внутри каждой папки по 2 файла.
    Папка 003124010222132200001, содержит 003124010222132200001.txt 003124010222132200001h.ini.
    И папка 003124010222132200002 с файлами 003124010222132200002.txt 003124010222132200002h.ini

    • Гость

    Где находится xcopy ?
    К какой программе относится команда xcopy ?

      • Recluse

      Эти команды все без проблем выполняются в обычной командной строке Windows.

      Но если действительно нужно расположение xcopy.exe - то это Windows\system32 и Windows\SysWOW64.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Напоминаем Вам, что Ваше сообщение будет опубликовано только после проверки администратором сайта. Обычно это занимает 1-2 рабочих дня.