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


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

Описание

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

Синтаксис

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

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

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

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

xcopy a: b: /s /e

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

xcopy a: b: /s /e /h

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

xcopy
awdata
eports /d:29-12-1993

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

xcopy
awdata
eports /u

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

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

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

xcopy customer h:publicaddress /s /e /k /p

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

xcopy customer h:publicaddress /s /e /k /p /i

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

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

copyit c:prgmcode b:

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

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


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

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

  • 04.02.2020
  • 01.11.2020


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

COPY – Копирование одного или нескольких файлов из одного расположения в другое.

Параметры

Чтобы скопировать файл Memo.doc в файл Letter.doc на текущем диске и убедиться, что символ конца файла находится в конце скопированного файла, введите следующую команду:

copy memo.doc letter.doc /a

Чтобы скопировать файл Robin.typ с текущего каталога на текущем диске в существующий каталог Birds на диске C, введите следующую команду:

copy robin.typ c:irds

Если каталог Birds не существует, файл Robin.typ будет скопирован в файл с именем Birds в корневой каталог диска C.

Чтобы скопировать несколько файлов в один, перечислите несколько файлов в параметре источник, разделяя их имена значком плюс (+), и укажите в параметре назначение файл, который должен содержать результат объединения этих файлов. Например, чтобы объединить файлы Mar89.rpt, Apr89.rpt и May89.rpt из текущего каталога на текущем диске и поместить их в файл Report в текущем каталоге на текущем диске, введите следующую команду:

copy mar89.rpt + apr89.rpt + may89.rpt report

При объединении команда copy создает конечный файл с текущими датой и временем. Если параметр назначение не указан, файлы объединяются и сохраняются в файле с именем первого файла в списке. Например, чтобы объединить четыре файла в файле Report, если такой файл уже существует, введите следующую команду:

copy report + mar89.rpt + apr89.rpt + may89.rpt

Кроме того, несколько файлов можно объединить в один с помощью символов подстановки (* или ?). Например, чтобы объединить все файлы с расширением .txt в текущем каталоге на текущем диске в файл Combin.doc, введите следующую команду:

copy *.txt combin.doc

Если требуется объединить несколько двоичных файлов в один с использованием подстановочных знаков, воспользуйтесь параметром /b. В результате CTRL+Z не будет рассматриваться как символ конца файла в Windows XP. Например, введите следующую команду:

copy /b *.exe combin.exe

Если объединяются двоичные файлы, результат может оказаться непригодным из-за нарушения внутреннего форматирования.

В следующем примере команда copy объединяет каждый файл с расширением .txt с соответствующим ему файлом с расширением .ref. Результатом является файл с тем же именем, но с расширением .doc. Таким образом, команда copy объединит файлы File1.txt и File1.ref в файл File1.doc, затем файлы File2.txt и File2.ref в файл File2.doc и т. д. Например, введите следующую команду:

copy *.txt + *.ref *.doc

Чтобы объединить сначала все файлы с расширением .txt, а затем все файлы с расширением .ref в файл Combin.doc, введите следующую команду:

copy *.txt + *.ref combin.doc


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

The Xcopy tool, which stands for extended copy, is a popular command-line utility for copying massive amounts of data in Windows. Compared to the traditional copy command, Xcopy has more features and switches that give you better control when copying or moving files and folders.

:/>  Что такое архивация виндовс 7

Not a reader? Watch this related video tutorial!

In this guide, you will learn how to use Xcopy for various file copy scenarios. From copying a single file, multiple directories, applying filters or exclusions, and more. By the end, you will have gained the knowledge to use Xcopy in your day-to-day file copying tasks.

Prerequisites

Xcopy is a command-line utility, which has been available out of the box since Windows 98. You can find this tool under the %WINDIR%system32 folder with the executable name xcopy.exe.

Compared to the Windows copy command, Xcopy is much more efficient in copying files and directories. In addition, Xcopy has more options that make it more customizable and lets you control the file copy behavior.

Benefits

There are several benefits or advantages of using Xcopy that you will learn as you progress in this guide. But below are some of the benefits of using Xcopy.

Limitations

As awesome as Xcopy is, it is not without limitations. Although these limitations may not be a deal-breaker, knowing what they are would be good before diving in.

Xcopy Syntax Reference

The first path designation refers to the source file(s); the second path designation refers to the destination file(s).

Source Options

If you have a file server containing a huge amount of files that you want to copy, perhaps to a backup location, testing out your Xcopy command first would be ideal. One situation when you’d want to test Xcopy is when you’re combining multiple Xcopy options.

Using the /L switch with Xcopy, you can simulate what would have happened when you issued the command by listing which files it would copy. This way, you can confirm whether your command will copy all the files that you intended.

XCOPY C:WorkareaXCopyDemo C:WorkareaXCopyDemoFolder /L

Copying a Single File

The most basic operation you can do with Xcopy is copying a file from a source to a destination without using any options. For example, the command below will copy a text file to a destination directory, and the file name will be the same.

XCOPY C:WorkareaXCopyDemoNewFile.txt C:WorkareaXCopyDemoFolder

You can also copy the source file and change the destination filename by running the command below.

XCOPY C:WorkareaXCopyDemoNewFile.txt C:WorkareaXCopyDemoFolderAnotherFile.txt

Copying Files to a New Folder

With Xcopy, you can copy files and create the destination directory on the fly. To do so, you need to append the /I option to the Xcopy command.

For example, the command below copies the files from the C:WorkareaDemo folder to the D:Workarea folder. If the destination folder does not exist, Xcopy creates the destination folder using the /I option.

XCOPY C:WorkareaDemo D:Workarea /I

Copying All Files and Folders Recursively

Aside from copying files from one folder to another, Xcopy also lets you copy folders and files recursively. And there are two ways you can do a recursive copy—with and without empty folders.

To copy all files and directories while ignoring empty directories, append the /S option to the end of the Xcopy command, as shown below.

On the other hand, to include empty directories during the recursive copy, add the /E option instead to the command.

Включая скрытые и системные файлы

По умолчанию Xcopy не включает скрытые и системные файлы в операции копирования. Но если вам нужно заставить Xcopy включать скрытые и системные файлы, добавьте в команду переключатель /H.

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

XCOPY C:WorkareaDocuments D:WorkareaDocuments /S /H /C /Y

Сохранение атрибута файла только для чтения

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

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

XCOPY C:WorkareaXCopyDemoNewFile.txt D:Workarea /I /K /Y

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

XCOPY C:WorkareaXCopyDemoNewFile.txt D:Workarea /K /R /Y

Фильтрация файлов для копирования

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

:/>  Программа UltraIso: как пользоваться?

Например, приведенная ниже команда рекурсивно копирует только файлы с расширением .cs из корня диска C: в корень диска E:. Эта команда также игнорирует ошибки и перезаписывает существующие файлы без запроса подтверждения.

XCOPY C:*.cs E: /S /C /Y

Исключение файлов и папок из копии

Мощной функцией Xcopy является возможность исключать файлы из процесса копирования. Чтобы использовать эту функцию, вы можете использовать переключатель /EXCLUDE. Этот переключатель принимает имена файлов, содержащих списки исключений.

Чтобы запустить Xcopy с исключениями, выполните приведенную ниже команду и укажите полный путь к файлу исключений с ключом /EXCLUDE. Эта команда использует файл C:WorkareaXCopyDemoExclude.txt.

XCOPY C:WorkareaXCopyDemo C:WorkareaBackup /S /Y /Exclude:C:WorkareaXCopyDemoExclude.txt

Результат? Xcopy копирует файлы, но пропускает xyz.txt, Exclude.txt, все файлы с расширениями .pdf и .png и все файлы в каталоге exclude.

Выполнение дифференциального копирования

Когда вам нужно сделать резервную копию файлов из одного места в другое, у Xcopy есть опция, позволяющая выполнять дифференциальное резервное копирование. Вместо того, чтобы копировать все файлы, дифференциальное резервное копирование копирует только те файлы, дата изменения которых приходится на дату или после нее, указанную для переключателя /D:m-d-y.

Например, чтобы скопировать только файлы с датой изменения 1 апреля 2021 г. или позже, выполните приведенную ниже команду. Кроме того, эта команда выполняет рекурсивное копирование, игнорирует ошибки и перезаписывает существующие файлы в месте назначения.

XCOPY C:WorkareaXCopyDemo C:WorkareaBackup /D:04-01-2021 /S /C /Y

Если вы не укажете дату с параметром /D, Xcopy скопирует только исходные файлы, которые новее, чем конечные файлы.

Копирование файлов на основе атрибута архива

Обычно программы резервного копирования удаляют архивный атрибут файла после операции резервного копирования. После изменения файла (т. е. редактирования и сохранения) Windows автоматически сбрасывает атрибут архива файлов.

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

Чтобы копировать файлы с атрибутом архива, вы можете воспользоваться ключами /A и /M. Какой из этих переключателей использовать, зависит от того, хотите ли вы сохранить атрибут архива файла или нет.

XCOPY C:WorkareaDemo D:WorkareaTest /A /S /Y

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

XCOPY C:WorkareaDemo D:WorkareaTest /M /S /Y

Сохранение информации о владельце файла и ACL

Представьте себе создание резервной копии всей папки профиля. У каждого файла могут быть разные владельцы или уникальные разрешения. Если вам нужно восстановить эти файлы, вам нужны те же владельцы и разрешения.

Чтобы скопировать файлы и сохранить информацию о владельце и ACL, добавьте параметр /O к команде xcopy, как показано ниже.

XCOPY C:Рабочая область D:Работа /O /I /Y

Помимо сохранения информации о владельце и ACL, вы также можете включить настройки аудита файлов. Копирование параметров аудита может быть полезно, если ваша организация применяет объекты групповой политики (GPO) к файлам аудита.

Чтобы включить параметры аудита файлов при копировании файлов с помощью Xcopy, используйте переключатель /X. Переключатель /X также подразумевает переключатель /O, поэтому вам не нужно использовать оба переключателя одновременно.

XCOPY C:Рабочая область D:Работа /X /I /Y

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

Xcopy может не только копировать файлы между местами на одном или разных дисках, но также может копировать файлы по сети. К сожалению, копирование файлов по сети не всегда надежно. Сетевые соединения могут страдать от коротких прерываний и, в некоторых случаях, полной потери соединения.

К счастью, вы можете запустить Xcopy в перезапускаемом режиме. Это означает, что даже если процесс копирования останавливается из-за сетевой ошибки, копирование может возобновиться после повторного установления сетевого подключения. Чтобы запустить Xcopy в перезапускаемом режиме, вам нужно добавить переключатель /Z в команду.

Например, приведенная ниже команда выполняет рекурсивное копирование файла из папки C:Workarea в сетевую папку. Параметр /Z запускает Xcopy в перезапускаемом режиме.

XCOPY C:Рабочая область “\SERVER01Backup” /S /Z

Используя переключатель /Z, Xcopy также отображает ход копирования файла в процентах.

Копирование файлов с использованием небуферизованного ввода-вывода

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

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

Чтобы копировать большие файлы, используя небуферизованный ввод-вывод, вы можете добавить переключатель /J к команде Xcopy, как показано ниже.

XCOPY C:Workareaabc.mp4 D:Temp /I /J

:/>  Как скопировать выделенные данные в буфер обмена? Какие комбинации клавиш могут использоваться для копирования данных

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

Как и любые другие задачи, копирование файлов не всегда может дать 100% успешный результат. Некоторые файлы могут быть повреждены во время передачи, даже если видимых ошибок нет.

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

Приведенная ниже команда копирует все файлы из C:WorkareaXCopyDemo в C:WorkareaBackup и проверяет каждый файл с помощью переключателя /V. Переключатель /F отображает полный путь к исходному и целевому файлам.

XCOPY C:WorkareaXCopyDemo C:WorkareaBackup /F /H /S /X /V

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

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

Xcopy C:WorkareaXCOPYDemo C:WorkareaXCOPYDemoFolder /S /G

Копирование структуры папок

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

Для этого запустите команду Xcopy с ключом /T. Использование ключа /T приведет к тому, что Xcopy скопирует в место назначения только структуру дерева каталогов, но игнорирует пустые каталоги.

Вы также можете добавить ключ /E к команде, чтобы включить пустые каталоги, как показано в приведенном ниже примере команды.

Xcopy C:WorkareaXCOPYDemo C:WorkareaXCOPYDemoFolder /T /E

Если что-то и может пойти не так, так оно и будет. То же самое происходит, когда вы копируете файлы независимо от объема. Ниже приведены распространенные ошибки Xcopy, с которыми вы можете столкнуться.

Недопустимое количество параметров

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

Например, если путь — C:Documents and Settings, введите путь как «C:Documents and Settings».

Невозможно выполнить циклическое копирование

Эта ошибка возникает, если исходный каталог, который вы копируете, также включает целевой каталог. В этом случае Xcopy войдет в цикл, что приведет к ошибке. При использовании Xcopy местом назначения должен быть полностью независимый каталог или диск, если вы копируете все каталоги и подкаталоги.

Эта ошибка возникает, если вы ввели неверный или недопустимый синтаксис в команде. Например, вы можете столкнуться с этой ошибкой, если указали путь в кавычках, но конечные кавычки отсутствуют.

Например, в приведенной ниже команде отсутствует закрывающая двойная кавычка в пути назначения.

Xcopy C:Workarea “C:WorkareaXCopy Demo /S /I /E /Y

Коды выхода

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

Командная оболочка будет сохранять код выхода в переменной %ErrorLevel%. Затем ваш код может проверить значение этой переменной, чтобы определить результат операции Xcopy.

Ниже приведена таблица, в которой перечислены все коды выхода Xcopy.

Сценарии с помощью Xcopy

Помимо интерактивного использования Xcopy, вы можете лучше воспользоваться его преимуществами, если будете использовать его для автоматизации задач с помощью сценариев. Ниже приведено несколько примеров, демонстрирующих, как вы можете использовать Xcopy в сценариях.

Этот пример пакетного сценария рекурсивно копирует все файлы с логикой обработки ошибок. И на основе кода ошибки или выхода скрипт возвращает сообщение с указанием причины ошибки.

Чтобы создать пакетный файл, откройте текстовый редактор или редактор кода по вашему выбору, скопируйте приведенный ниже код, вставьте его в свой редактор и сохраните файл как copycomplete.bat.

pycomplete.bat xcopydemo xcopydemofolder

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

Запуск пакетного файла Xcopy

Пакетный скрипт Xcopy для перемещения данных

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

Приведенный ниже код скопирует файлы в место назначения. И если процесс копирования прошел успешно, скрипт удалит файлы в источнике. Скопируйте приведенный ниже код и сохраните его в новом файле с именем movefiles.bat.

movefiles.bat xcopydemo xcopydemofolder

Заключение

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