Копирование файлов по маске bat
Команда XCOPY используется для копирования файлов и каталогов с сохранением их структуры. По сравнению с командой COPY имеет более широкие возможности и является наиболее гибким средством копирования в командной строке Windows
Формат командной строки:
XCOPY источник [целевой_объект] [/A | /M] [/D[:дата]] [/P] [/S [/E]] [/V] [/W] [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U] [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z] [/B] [/EXCLUDE:файл1[+файл2][+файл3]. ]
Параметры командной строки:
источник - Копируемые файлы.
целевой_объект - Расположение или имена новых файлов.
/A - Копирование только файлов с установленным архивным атрибутом; сам атрибут при этом не изменяется.
/M - Копирование только файлов с установленным архивным атрибутом; после копирования атрибут снимается.
/D:m-d-y - Копирование файлов, измененных не ранее указанной даты. Если дата не указана, заменяются только конечные файлы, более старые, чем исходные.
/EXCLUDE:файл1[+файл2][+файл3]. - Список файлов, содержащих строки с критериями для исключения файлов и папок из процесса копирования. Каждая строка должна располагаться в отдельной строке файла. Если какая-либо из строк совпадает с любой частью абсолютного пути к копируемому файлу, такой файл исключается из операции копирования. Например, указав строку \obj\ или .obj, можно исключить все файлы из папки obj или все файлы с расширением OBJ соответственно.
/P - Вывод запросов перед созданием каждого нового файла.
/S - Копирование только непустых каталогов с подкаталогами.
/E - Копирование каталогов с подкаталогами, включая пустые. Эквивалентен сочетанию ключей /S /E. Совместим с ключом /T.
/V - Проверка размера каждого нового файла.
/W - Вывод запроса на нажатие клавиши перед копированием.
/C - Продолжение копирования вне зависимости от наличия ошибок.
/I - Если целевой объект не существует и копируется несколько файлов, считается, что целевой объект задает каталог.
/Q - Запрет вывода имен копируемых файлов.
/F - Вывод полных имен исходных и целевых файлов.
/L - Вывод имен копируемых файлов.
/G - Копирование зашифрованных файлов в целевой каталог, не поддерживающий шифрование.
/H - Копирование, среди прочих, скрытых и системных файлов.
/R - Перезапись файлов, предназначенных только для чтения.
/T - Создание структуры каталогов без копирования файлов. Пустые каталоги и подкаталоги не включаются в процесс копирования. Для создания пустых каталогов и подкаталогов используйте сочетание ключей /T /E.
/U - Копирование только файлов, уже имеющихся в целевом каталоге.
/K - Копирование атрибутов. При использовании команды XСOPY обычно сбрасываются атрибуты "Только для чтения".
/N - Использование коротких имен при копировании.
/O - Копирование сведений о владельце и данных ACL.
/X - Копирование параметров аудита файлов (подразумевает ключ /O).
/Y - Подавление запроса подтверждения на перезапись существующего целевого файла.
/-Y - Запрос подтверждения на перезапись существующего целевого файла.
/Z - Копирование сетевых файлов с возобновлением.
/B - Копирование символической ссылки вместо ее целевого объекта.
/J - Копирование с использованием небуферизованного ввода/вывода. Рекомендуется для очень больших файлов.
Ключ /Y можно установить через переменную среды COPYCMD.
Ключ /-Y командной строки переопределяет такую установку.
Комментарии
Использование /z
Если вы потеряли подключение на этапе копирования (например, если сервер переходит в режим «вне сети»), то после повторного подключения Подключение возобновится. /z также отображает процент выполнения операции копирования для каждого файла.
Использование /y в переменной среды копикмд.
В переменной среды КОПИКМД можно использовать параметр /y . Эту команду можно переопределить с помощью /-и в командной строке. По умолчанию выводится запрос на перезапись.
Копирование зашифрованных файлов
Копирование зашифрованных файлов на том, который не поддерживает EFS, приводит к ошибке. Сначала расшифровать файлы или скопировать их на том, который поддерживает EFS.
Чтобы добавить файлы, укажите один файл для назначения, но несколько файлов для источника (то есть с помощью подстановочных знаков или формата file1 + file2 + файл3).
Значение по умолчанию для назначения
Если опустить назначение, команда xcopy скопирует файлы в текущий каталог.
Указание того, является ли назначение файлом или каталогом
Нажмите клавишу F, если хотите скопировать файл или файлы в файл. Нажмите клавишу D, если хотите скопировать файл или файлы в каталог.
Использование команды xcopy для установки атрибута архива для целевых файлов
Команда xcopy создает файлы с установленным атрибутом Archive, независимо от того, был ли этот атрибут задан в исходном файле. Дополнительные сведения об атрибутах файлов и attribсм. в разделе Дополнительные ссылки.
Сравнение xcopy и diskcopy
Если у вас есть диск, содержащий файлы в подкаталогах, и вы хотите скопировать его на диск, имеющий другой формат, используйте команду xcopy вместо команды diskcopy. Так как команда diskcopy копирует диски по дорожке, исходный и целевой диски должны иметь одинаковый формат. Команда xcopy не имеет этого требования. Используйте xcopy , если вам не нужна полная копия образа диска.
Коды выхода для команды xcopy
Для обработки кодов завершения, возвращаемых xcopy, используйте параметр ERRORLEVEL в командной строке If в пакетной программе. Пример пакетной программы, обрабатывающей коды завершения с помощью If, см. в разделе Дополнительные ссылки. В следующей таблице перечислены все коды выхода и их описание.
Синтаксис
Коды выхода (return)
Значение | Описание |
---|---|
0 | Файлы не были скопированы. Сбой не обнаружен. Файлы не были несовпадения. Файлы уже существуют в целевом каталоге; следовательно, операция копирования была пропущена. |
1 | Все файлы успешно скопированы. |
2 | В целевом каталоге есть несколько дополнительных файлов, которые отсутствуют в исходном каталоге. Файлы не были скопированы. |
3 | Некоторые файлы были скопированы. Были представлены дополнительные файлы. Сбой не обнаружен. |
5 | Некоторые файлы были скопированы. Некоторые файлы были несовпадения. Сбой не обнаружен. |
6 | Существуют дополнительные файлы и несовпадение файлов. Файлы не были скопированы и не обнаружены сбои. Это означает, что файлы уже существуют в целевом каталоге. |
7 | Файлы были скопированы, несогласование файлов присутствовало и были представлены дополнительные файлы. |
8 | Несколько файлов не скопируются. |
Любое значение больше 8 указывает на то, что во время операции копирования произошел по крайней мере один сбой.
Сегодня я хочу поделиться с вами одним из приемов копирования файлов. Бывает ситуация, когда нужно найти и скопировать определённые файлы на компьютере, конечно, можно воспользоваться поиском, но это не всегда удобно и приемлемо. Например, нам нужно скопировать все файлы с расширением txt удаленно или просто через консоль, тогда и приходит на помощь данный метод: нужно открыть терминал (Пуск -> Выполнить и набрать cmd), после чего набрать команду для рекурсивного копирования файлов (xcopy) и передать ей параметр S, благодаря которому не будут копироваться пустые папки.
Так же данный метод копирования позволяет сохранить файлы с одинаковым именем, так как копируется и иерархия папок. У команды xcopy несколько больше возможностей, задаваемых параметрами ее вызова. Полный список параметров и их описание можно найти в справке по команде, набрав в терминале help xcopy. Аналогичные действия можно выполнить и в ОС Linux, арсенал которой намного богаче, чем у Windows. В Linux для рекурсивного копирования всех файлов, имеющих расширение txt из указанной папки, необходимо воспользоваться двумя командами: cp - копирование файлов и find - для поиска нужных файлов.
Также вы можете указать параметр r для того, чтобы избежать потери дублирующихся файлов и сохранить иерархию папок, как в случае с xcopy в ОС Windows.
Examples
1. To copy all the files and subdirectories (including any empty subdirectories) from drive A to drive B, type:
2. To include any system or hidden files in the previous example, add the/h command-line option as follows:
3. To update files in the \Reports directory with the files in the \Rawdata directory that have changed since December 29, 1993, type:
4. To update all the files that exist in \Reports in the previous example, regardless of date, type:
5. To obtain a list of the files to be copied by the previous command (that is, without actually copying the files), type:
The file xcopy.out lists every file that is to be copied.
6. To copy the \Customer directory and all subdirectories to the directory \\Public\Address on network drive H:, retain the read-only attribute, and be prompted when a new file is created on H:, type:
7. To issue the previous command, ensure that xcopy creates the \Address directory if it does not exist, and suppress the message that appears when you create a new directory, add the /i command-line option as follows:
8. You can create a batch program to perform xcopy operations and use the batch if command to process the exit code if an error occurs. For example, the following batch program uses replaceable parameters for the xcopy source and destination parameters:
To use the preceding batch program to copy all files in the C:\Prgmcode directory and its subdirectories to drive B, type:
The command interpreter substitutes C:\Prgmcode for %1 and B: for %2, then uses xcopy with the /e and /s command-line options. If xcopy encounters an error, the batch program reads the exit code and goes to the label indicated in the appropriate IF ERRORLEVEL statement, then displays the appropriate message and exits from the batch program.
9. This example copies all the non-empty directories, plus files whose name match the pattern given with the asterisk symbol.
In the preceding example, this particular source parameter value .\toc*.yml copies the same 3 files even if its two path characters .\ were removed. However, no files would be copied if the asterisk wildcard was removed from the source parameter, making it just .\toc.yml.
Копирует данные файлов из одного расположения в другое.
Syntax
Параметры
Параметр | Описание |
---|---|
Указание пути к исходному каталогу. | |
Указание пути к целевому каталогу. | |
Указывает файл или файлы для копирования. Поддерживаются подстановочные знаки (* или ?). Если этот параметр не указан, *.* используется в качестве значения по умолчанию. | |
Задает параметры, используемые с командой robocopy , включая параметры копирования, файла, повторных попыток, ведения журнала и задания . |
Параметры копирования
- D — данные
- A — атрибуты
- T — метки времени
- S — список управления доступом NTFS (ACL)
- O — сведения о владельце
- U — сведения об аудите
- D — данные
- A — атрибуты
- T — метки времени
- R — только для чтения
- A — архив
- S — система
- H — скрытый
- C — сжатый
- N — не индексировано содержимое
- E — зашифровано
- T — временное
- R — только для чтения
- A — архив
- S — система
- H — скрытый
- C — сжатый
- N — не индексировано содержимое
- E — зашифровано
- T — временное
При использовании параметра копирования /secfix укажите тип сведений о безопасности, которые требуется скопировать, используя один из следующих дополнительных параметров копирования:
Параметры выбора файла
- R — только для чтения
- A - Архив
- S — система
- H — скрытый
- C — сжатый
- N — не индексировано содержимое
- E — зашифровано
- T — временный
- O — автономный режим
- R — только для чтения
- A - Архив
- S — система
- H — скрытый
- C — сжатый
- N — не индексировано содержимое
- E — зашифровано
- T — временный
- O — автономный режим
Параметры повтора
Параметр | Описание |
---|---|
/r: | Указание количества повторных попыток для неудавшихся копий. Значение по умолчанию n равно 1000 000 (один миллион повторных попыток). |
/w: | Указание времени ожидания между повторными попытками в секундах. Значение по умолчанию n равно 30 (время ожидания 30 секунд). |
/reg | Сохраняет значения, указанные в параметрах /r и /w , в качестве параметров по умолчанию в реестре. |
/tbd | Указывает, что система будет ожидать определения имен общих ресурсов (ошибка повтора 67). |
Параметры ведения журнала
Параметр | Описание |
---|---|
/l | Указывает, что файлы должны быть перечислены только (а не копируются, удаляются или метки времени). |
/x | Сообщает все дополнительные файлы, а не только выбранные. |
/v | Создает подробные выходные данные и отображает все пропущенные файлы. |
/ts | Включает метки времени исходного файла в выходные данные. |
/fp | Содержит полные имена путей файлов в выходных данных. |
/bytes | Печатает размеры в виде байтов. |
/ns | Указывает, что размеры файлов не записываются в журнал. |
/nc | Указывает, что классы файлов не записываются в журнал. |
/nfl | Указание, что имена файлов не должны регистрироваться. |
/ndl | Указание, что имена каталогов не должны регистрироваться. |
/np | Указывает, что не нужно отображать ход выполнения операции копирования (количество копируемых файлов или каталогов). |
/eta | Показывает предполагаемое время прибытия (ETA) скопированных файлов. |
/log: | Запись выходных данных о состоянии в файл журнала (перезапись существующего файла журнала). |
/log+: | Записывает выходные данные состояния в файл журнала (добавляет выходные данные в существующий файл журнала). |
/unicode | Отображает выходные данные состояния в виде текста Юникода. |
/unilog: | Записывает выходные данные состояния в файл журнала в виде текста Юникода (перезаписывает существующий файл журнала). |
/unilog+: | Записывает выходные данные состояния в файл журнала в виде текста Юникода (добавляет выходные данные в существующий файл журнала). |
/tee | Записывает выходные данные состояния в окно консоли, а также в файл журнала. |
/njh | Указывает, что заголовок задания отсутствует. |
/njs | Указывает, что сводка задания отсутствует. |
Параметры задания
Параметр | Описание |
---|---|
/job: | Указывает, что параметры должны быть производными от именованного файла задания. |
/save: | Указывает, что параметры необходимо сохранить в именованный файл задания. |
/quit | Завершает работу после обработки командной строки (для просмотра параметров). |
/nosd | Указывает, что исходный каталог не указан. |
/noddd | Указывает, что целевой каталог не указан. |
/if | Включает указанные файлы. |
Remarks
Using /z
If you lose your connection during the copy phase (for example, if the server going offline severs the connection), it resumes after you reestablish the connection. /z also displays the percentage of the copy operation completed for each file.
Using /y in the COPYCMD environment variable.
You can use /y in the COPYCMD environment variable. You can override this command by using /-y on the command line. By default, you are prompted to overwrite.
Copying encrypted files
Copying encrypted files to a volume that does not support EFS results in an error. Decrypt the files first or copy the files to a volume that does support EFS.
To append files, specify a single file for destination, but multiple files for source (that is, by using wildcards or file1+file2+file3 format).
Default value for Destination
If you omit Destination, the xcopy command copies the files to the current directory.
Specifying whether Destination is a file or directory
If Destination does not contain an existing directory and does not end with a backslash (), the following message appears:
Press F if you want the file or files to be copied to a file. Press D if you want the file or files to be copied to a directory.
You can suppress this message by using the /i command-line option, which causes xcopy to assume that the destination is a directory if the source is more than one file or a directory.
Using the xcopy command to set archive attribute for Destination files
The xcopy command creates files with the archive attribute set, whether or not this attribute was set in the source file. For more information about file attributes and attrib, see Additional References.
Comparing xcopy and diskcopy
If you have a disk that contains files in subdirectories and you want to copy it to a disk that has a different format, use the xcopy command instead of diskcopy. Because the diskcopy command copies disks track by track, your source and destination disks must have the same format. The xcopy command does not have this requirement. Use xcopy unless you need a complete disk image copy.
Exit codes for xcopy
To process exit codes returned by xcopy, use the ErrorLevel parameter on the if command line in a batch program. For an example of a batch program that processes exit codes using if, see Additional References. The following table lists each exit code and a description.
Примеры
1. чтобы скопировать все файлы и подкаталоги (включая все пустые подкаталоги) с диска A на диск B, введите:
2. чтобы включить в предыдущий пример все системные или скрытые файлы, добавьте параметр командной строки/h следующим образом:
3. чтобы обновить файлы в каталоге \репортс с файлами в каталоге \равдата, которые были изменены с 29 декабря 1993 г., введите:
4. чтобы обновить все файлы, существующие в \репортс в предыдущем примере, независимо от даты, введите:
5. чтобы получить список файлов для копирования с помощью предыдущей команды (т. е. без фактического копирования файлов), введите:
Файл xcopy. out содержит список всех копируемых файлов.
6. чтобы скопировать каталог \кустомер и все подкаталоги в каталог \\публик\аддресс на сетевом диске H:, оставьте атрибут "только для чтения" и при создании нового файла в H: введите:
8. можно создать пакетную программу для выполнения операций xcopy и использовать пакет If для обработки кода выхода при возникновении ошибки. Например, в следующей пакетной программе для параметров источника и назначения xcopy используются заменяемые параметры:
Чтобы использовать предыдущую пакетную программу для копирования всех файлов в каталоге К:\пргмкоде и его подкаталогов на диск B, введите:
9. в этом примере копируются все непустые каталоги, а также файлы, имя которых соответствует шаблону, заданному с помощью символа звездочки.
В предыдущем примере это конкретное значение исходного параметра .\ток *. yml копирует те же три файла, даже если их два символа пути . \ были удалены. Однако файлы не копируются, если из исходного параметра был удален подстановочный знак «звездочка», что делает его просто .\ток.ИМЛ.
Copies files and directories, including subdirectories.
For examples of how to use this command, see Examples.
Parameters
Parameter | Description |
---|---|
Required. Specifies the location and names of the files you want to copy. This parameter must include either a drive or a path. | |
[] | Specifies the destination of the files you want to copy. This parameter can include a drive letter and colon, a directory name, a file name, or a combination of these. |
/w | Displays the following message and waits for your response before starting to copy files: Press any key to begin copying file(s) |
/p | Prompts you to confirm whether you want to create each destination file. |
/c | Ignores errors. |
/v | Verifies each file as it is written to the destination file to make sure that the destination files are identical to the source files. |
/q | Suppresses the display of xcopy messages. |
/f | Displays source and destination file names while copying. |
/l | Displays a list of files that are to be copied. |
/g | Creates decrypted Destination files when the destination does not support encryption. |
/d [:MM-DD-YYYY] | Copies source files changed on or after the specified date only. If you do not include a MM-DD-YYYY value, xcopy copies all Source files that are newer than existing Destination files. This command-line option allows you to update files that have changed. |
/u | Copies files from Source that exist on Destination only. |
/i | If Source is a directory or contains wildcards and Destination does not exist, xcopy assumes Destination specifies a directory name and creates a new directory. Then, xcopy copies all specified files into the new directory. By default, xcopy prompts you to specify whether Destination is a file or a directory. |
/s | Copies directories and subdirectories, unless they are empty. If you omit /s, xcopy works within a single directory. |
/e | Copies all subdirectories, even if they are empty. Use /e with the /s and /t command-line options. |
/t | Copies the subdirectory structure (that is, the tree) only, not files. To copy empty directories, you must include the /e command-line option. |
/k | Copies files and retains the read-only attribute on Destination files if present on the Source files. By default, xcopy removes the read-only attribute. |
/r | Copies read-only files. |
/h | Copies files with hidden and system file attributes. By default, xcopy does not copy hidden or system files |
/a | Copies only Source files that have their archive file attributes set. /a does not modify the archive file attribute of the source file. For information about how to set the archive file attribute by using attrib, see Additional References. |
/m | Copies Source files that have their archive file attributes set. Unlike /a, /m turns off archive file attributes in the files that are specified in the source. For information about how to set the archive file attribute by using attrib, see Additional References. |
/n | Creates copies by using the NTFS short file or directory names. /n is required when you copy files or directories from an NTFS volume to a FAT volume or when the FAT file system naming convention (that is, 8.3 characters) is required on the Destination file system. The Destination file system can be FAT or NTFS. |
/o | Copies file ownership and discretionary access control list (DACL) information. |
/x | Copies file audit settings and system access control list (SACL) information (implies /o). |
/exclude:FileName1[+[FileName2]][+[FileName3]( )] | Specifies a list of files. At least one file must be specified. Each file will contain search strings with each string on a separate line in the file. When any of the strings match any part of the absolute path of the file to be copied, that file will be excluded from being copied. For example, specifying the string obj will exclude all files underneath the directory obj or all files with the .obj extension. |
/y | Suppresses prompting to confirm that you want to overwrite an existing destination file. |
/-y | Prompts to confirm that you want to overwrite an existing destination file. |
/z | Copies over a network in restartable mode. |
/b | Copies the symbolic link instead of the files. This parameter was introduced in Windows Vista®. |
/j | Copies files without buffering. Recommended for very large files. This parameter was added in Windows Server 2008 R2. |
/? | Displays help at the command prompt. |
Параметры
Синтаксис
Например, чтобы скопировать файл с именем yearly-report.mov из c:\reports в общую папку \\marketing\videos , включив многопотоок для повышения производительности (с параметром /mt ) и возможность перезапуска передачи в случае прерывания (с параметром /z ) введите:
Примеры использования XCOPY
XCOPY /? - выдать краткую справку по использованию команды.
Что означает D:\copy1:
имя файла или каталога
(F = файл, D = каталог)? D
После ответа D целевой каталог будет создан и копирование будет выполняться в D:\COPY1\. Для подавления запроса на создание целевого каталога используется параметр /I:
xcopy C:\users D:\copy1 /I
xcopy C:\users D:\copy1 /H /Y /C - копирование файлов, включая скрытые и системные, с подавлением запроса на перезапись существующих и возобновлением при ошибке. Если существующий в целевом каталоге файл имеет атрибут "Только чтение", то копирование не выполняется. Для перезаписи таких файлов используется ключ /R
xcopy C:\users D:\copy1 /H /Y /C /R /S - скопировать все файлы и подкаталоги ( /S ) с перезаписью существующих без запроса ( /Y ) , включая скрытые и системные. ( /H ) с перезаписью файлов с атрибутом "Только чтение" (/R) и игнорированием ошибок ( /C )
xcopy C:\users D:\copy1 /H /Y /C /R /S /EXCLUDE:C:\users\listnotcopy.txt - то же, что и в предыдущем случае, но текстовый файл C:\users\listnotcopy.txt задает признаки исключения из процедуры копирования. Пример содержимого файла:
\User1\ - исключить из копирования каталог C:\users\user1
All Users исключить из копирования каталог C:\users\All Users
de*.* - исключить из копирования все файлы и каталоги, начинающиеся на буквосочетание "de"
xcopy C:\users\*.exe D:\copy1 /H /Y /C /R /S /EXCLUDE:C:\users\listnotcopy.txt - то же, что и в предыдущем примере, но выполняется только копирование исполняемых файлов с расширением .exe .
xcopy %TEMP%\*.ini D:\copy1\ini /H /Y /C /R /S /I - копирование всех файлов с расширением .ini из каталога временных файлов в каталог D:\copy1\ini\ . Если целевой подкаталог \ini\ не существует, то он будет создан без запроса пользователю ( /I ) .
xcopy %TEMP%\*.ini D:\copy1\ini /H /Y /C /R /S /I /D:09-16-2013 - то же, что и в предыдущем примере, но выполняется копирование только тех файлов, у которых установлена дата изменения 16 сентября 2013 года и старше.
xcopy C:\ D:\copy1\LISTDIR /H /Y /C /R /S /I /E /T - создать структуру папок диска C: в каталоге D:\copy1\LISTDIR . Копирование файлов не выполняется. Копируются только папки, включая пустые, скрытые и системные.
xcopy C:\ D:\copy1\LISTDIR /H /Y /C /R /S /I /E /T /D:09-16-2013 воссоздать в каталоге D:\copy1\LISTDIR структуру папок диска C: , с датой изменения 16 сентября 2013 года и позже.
Для добавления новых файлов в каталоги и обновления существующих на более поздние версии, можно использовать команду REPLACE.
В разделе Примеры показан принцип использования этой команды.
Читайте также: