Копирование файлов с сохранением структуры папок
Копирует один или несколько файлов из одного расположения в другое.
В консоли восстановления можно также использовать команду Копировать с другими параметрами. дополнительные сведения о консоли восстановления см. в разделе Windows среды восстановления (Windows RE).
Комментарии
Использование /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, см. в разделе Дополнительные ссылки. В следующей таблице перечислены все коды выхода и их описание.
Синтаксис
Например, чтобы скопировать файл с именем yearly-report.mov из c:\reports в общую папку \\marketing\videos , включив многопотоок для повышения производительности (с параметром /mt ) и возможность перезапуска передачи в случае прерывания (с параметром /z ) введите:
Примеры
Чтобы скопировать файл с именем memo.doc для letter.doc на текущем диске и убедиться, что символ конца файла (Ctrl + Z) находится в конце скопированного файла, введите:
Чтобы скопировать файл с именем перебора. Typ из текущего диска и каталога в существующий каталог с именем птиц , расположенный на диске C, введите:
Если каталог птиц не существует, файл Renamed . Typ копируется в файл с именем птиц , расположенный в корневом каталоге на диске C.
Чтобы объединить Mar89. rpt, Apr89. rptи May89. rpt, расположенные в текущем каталоге, и поместить их в файл с именем Report (также в текущем каталоге), введите:
При объединении файлов команда копирования помечает конечный файл текущими датой и временем. Если параметр Destinationне указан, файлы объединяются и сохраняются под именем первого файла в списке.
Чтобы объединить все файлы в отчете, если файл с именем Report уже существует, введите:
Чтобы объединить все файлы в текущем каталоге, имеющие расширение имени файла .txt, в один файл с именем Combined.doc, введите:
Чтобы объединить несколько двоичных файлов в один файл, используйте подстановочные знаки, включите /b. это не доWindows расинтерпретации CTRL + Z как символа конца файла. Например, введите:
При объединении двоичных файлов результирующий файл может оказаться непригодным для использования из-за внутреннего форматирования.
- Сочетание каждого файла с расширением .txt с соответствующим ref-файлом создает файл с тем же именем, но с расширением .doc. Команда Copy объединяет file1.txt с параметром file1. ref в форму file1.doc, а затем команда объединяет file2.txt с file2. ref в форму file2.docи т. д. Например, введите:
Чтобы объединить все файлы с расширением .txt, а затем объединить все файлы с расширением REF в один файл с именем Combined.doc, введите:
Помогите пожалуйста, выкурил форум, но ответа не нашёл.
Есть задача скопировать файлы с сохранением структуры каталогов в другой каталог и потом грохнуть копируемые файлы. Места мало, целиком скопировать в другой каталог не получится и поэтому делаю цикл.
Структура каталогов примерно такая:
D:\TEST
+---11
+---3
| SANY2466.JPG
| Тест тест.JPG
|
+---4
| SANY2476.AVI
| SANY2478.JPG
| Тест тест.JPG
|
\---6
SANY2455.JPG
SANY2456.JPG
SANY2461.JPG
Тест тест.JPG
Сначала в цикле пытаюсь скопировать с сохранением структуры, потом буду удалять:
D:\>for /R D:\Test %d in ("*") do (xcopy /E "%d" D:\1)
И вот тут начинаются сюрпризы - копируется всё целиком без сохранения структуры каталогов.
Подскажите пожалуйста, что я делаю не так?
Есть задача скопировать файлы с сохранением структуры каталогов в другой каталог и потом грохнуть копируемые файлы |
Затем Вы делаете попытку, как мне показалось, скопировать полностью каталог test. Об удалении речь не идёт. При этом Вы пИшите
Места мало, целиком скопировать в другой каталог не получится |
Можно перемещать файлы по папкам, если структура папок в исходном каталоге не надо, её в исходной папке можно легко очистить
И, наконец, если структуру каталогов в исходной папке сохранять не надо и если исходная и конечная папки на одном диске. В принципе, исходное дерево каталогов можно восстановить
-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.
Последний раз редактировалось megaloman, 04-06-2016 в 17:31 .
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.
Пользуйтесь не той операцией для «копирование-удаление». Используйте банальное перемещение, желательно — ручное.
Проблема задачи проста - на резервных носителях HDD, из-за долгого времени хранения (уже больше 7 лет), началась деградация данных. Лечение простое - скопировать данные. Сам носитель цел и для копирования и последующего удаления копируемых данных целиком места там нет. В такой ситуации не спасает и перемещение, т.к. это просто запись файловой системы. Поэтому нужен цикл копирования и последующего удаления копируемого. При этом нужно сохранение структуры - копирую множество каталогов с данными.
В общем нужно из каталога D:\1 по очереди скопировать с подкаталогами все файлы в D:\2 с последующим удалением копируемого и сохранением структуры D\:1
Начал я с цикла копирования, т.к. добавить потом удаление не проблема, как оказалось проблема скопировать.
Команда 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 командной строки переопределяет такую установку.
Параметры
Параметр | Описание |
---|---|
/d | Позволяет сохранить копируемые зашифрованные файлы в виде расшифрованных файлов в месте назначения. |
/v | Проверяет, правильно ли записаны новые файлы. |
/n | Использует короткое имя файла (если доступно) при копировании файла с именем длиннее восьми символов или с расширением имени файла длиннее трех символов. |
/y | Подавляет запрос на подтверждение перезаписи существующего целевого файла. |
/-и | Выводит запрос на подтверждение перезаписи существующего целевого файла. |
/z | Копирует сетевые файлы в перезапускаемый режим. |
/a | Указывает текстовый файл ASCII. |
/b | Указывает на двоичный файл. |
Обязательный элемент. Указывает расположение, из которого необходимо скопировать файл или набор файлов. Источник может состоять из буквы диска и двоеточия, имени каталога, имени файла или их сочетания. | |
Обязательный. Указывает расположение, в которое необходимо скопировать файл или набор файлов. Назначение может состоять из буквы диска и двоеточия, имени каталога, имени файла или их сочетания. | |
/? | Отображение справки в командной строке. |
Комментарии
Можно скопировать текстовый файл ASCII, в котором используется символ конца файла (CTRL + Z), чтобы указать конец файла.
Если параметр /a предшествует или следует за списком файлов в командной строке, он применяется ко всем файлам, перечисленным до тех пор, пока не встретится копия. В этом случае /b применяется к файлу, предшествующему /b.
Результат использования параметра/a зависит от его позиции в строке командной строки:-if /a после Source, команда Copy обрабатывает файл как ASCII-файл и копирует данные, предшествующие первому символу конца файла (Ctrl + Z). - Если после параметраDestination указано значение, команда Copy добавляет символ конца файла (Ctrl + Z) в качестве последнего символа файла.
Если /b указывает интерпретатору команд считывать число байтов, указанное размером файла в каталоге. /b — это значение по умолчанию для Copy, если только копирование не объединяет файлы.
Если /b предшествует или следует за списком файлов в командной строке, он применяется ко всем файлам в списке до тех пор , пока не встретится параметр /a. В этом случае /a применяется к файлу, предшествующему /a.
Действие /b зависит от его позиции в командной строке:-if /b следует за источником, команда Copy копирует весь файл, включая любой символ конца файла (Ctrl + Z). -If /b следует за назначением, команда Copy не добавляет символ конца файла (Ctrl + Z).
Если в переменной среды копикмд предустановлен параметр /y , его можно переопределить с помощью /-и в командной строке. По умолчанию при замене этого параметра выводится запрос, если команда Copy не выполняется в пакетном скрипте.
Чтобы добавить файлы, укажите один файл для назначения, но несколько файлов для источника (используйте символы-шаблоны или формат файла file1 file2 файл3 ).
Если во время фазы копирования теряется соединение (например, если сервер переходит в автономный режим), можно использовать копию/z , чтобы возобновить подключение после восстановления подключения. Параметр /z также отображает процент завершения операции копирования для каждого файла.
Имя устройства можно заменить одним или несколькими экземплярами источника или назначения.
Если назначением является устройство (например, COM1 или LPT1), параметр /b копирует данные на устройство в двоичном режиме. В двоичном режиме copy/b копирует все символы (включая такие специальные символы, как CTRL + C, CTRL + S, CTRL + Z и ввод) на устройство в виде данных. Однако если параметр /bне указан, данные копируются на устройство в режиме ASCII. В режиме ASCII специальные символы могут привести к объединению файлов во время процесса копирования.
Если в источникеуказано несколько файлов, команда Copy объединяет их в один файл, используя имя файла, указанное в поле назначение. Команда Copy предполагает, что Объединенные файлы являются файлами ASCII, если не используется параметр /b .
Чтобы скопировать файлы длиной 0 байт или скопировать все файлы и подкаталоги каталога, используйте команду xcopy.
Чтобы назначить текущее время и дату файлу без изменения файла, используйте следующий синтаксис:
Где запятые указывают, что конечный параметр был намеренно оставлен.
Примеры
1. чтобы скопировать все файлы и подкаталоги (включая все пустые подкаталоги) с диска A на диск B, введите:
2. чтобы включить в предыдущий пример все системные или скрытые файлы, добавьте параметр командной строки/h следующим образом:
3. чтобы обновить файлы в каталоге \репортс с файлами в каталоге \равдата, которые были изменены с 29 декабря 1993 г., введите:
4. чтобы обновить все файлы, существующие в \репортс в предыдущем примере, независимо от даты, введите:
5. чтобы получить список файлов для копирования с помощью предыдущей команды (т. е. без фактического копирования файлов), введите:
Файл xcopy. out содержит список всех копируемых файлов.
6. чтобы скопировать каталог \кустомер и все подкаталоги в каталог \\публик\аддресс на сетевом диске H:, оставьте атрибут "только для чтения" и при создании нового файла в H: введите:
8. можно создать пакетную программу для выполнения операций xcopy и использовать пакет If для обработки кода выхода при возникновении ошибки. Например, в следующей пакетной программе для параметров источника и назначения xcopy используются заменяемые параметры:
Чтобы использовать предыдущую пакетную программу для копирования всех файлов в каталоге К:\пргмкоде и его подкаталогов на диск B, введите:
9. в этом примере копируются все непустые каталоги, а также файлы, имя которых соответствует шаблону, заданному с помощью символа звездочки.
В предыдущем примере это конкретное значение исходного параметра .\ток *. yml копирует те же три файла, даже если их два символа пути . \ были удалены. Однако файлы не копируются, если из исходного параметра был удален подстановочный знак «звездочка», что делает его просто .\ток.ИМЛ.
Копирует данные файлов из одного расположения в другое.
Синтаксис
Коды выхода (return)
Значение | Описание |
---|---|
0 | Файлы не были скопированы. Сбой не обнаружен. Файлы не были несовпадения. Файлы уже существуют в целевом каталоге; следовательно, операция копирования была пропущена. |
1 | Все файлы успешно скопированы. |
2 | В целевом каталоге есть несколько дополнительных файлов, которые отсутствуют в исходном каталоге. Файлы не были скопированы. |
3 | Некоторые файлы были скопированы. Были представлены дополнительные файлы. Сбой не обнаружен. |
5 | Некоторые файлы были скопированы. Некоторые файлы были несовпадения. Сбой не обнаружен. |
6 | Существуют дополнительные файлы и несовпадение файлов. Файлы не были скопированы и не обнаружены сбои. Это означает, что файлы уже существуют в целевом каталоге. |
7 | Файлы были скопированы, несогласование файлов присутствовало и были представлены дополнительные файлы. |
8 | Несколько файлов не скопируются. |
Любое значение больше 8 указывает на то, что во время операции копирования произошел по крайней мере один сбой.
Параметры
Синтаксис
Примеры использования 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.
В разделе Примеры показан принцип использования этой команды.
Параметры
Параметр | Описание |
---|---|
Указание пути к исходному каталогу. | |
Указание пути к целевому каталогу. | |
Указывает файл или файлы для копирования. Поддерживаются подстановочные знаки (* или ?). Если этот параметр не указан, *.* используется в качестве значения по умолчанию. | |
Задает параметры, используемые с командой 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 | Включает указанные файлы. |
Читайте также: