2010-11-01 21:50:02 +0000 2010-11-01 21:50:02 +0000
72
72

Команда командной строки для копирования всего каталога (включая папку каталога) в другой каталог

с помощью командной строки, я бы хотел скопировать один каталог в другой. Например, есть каталог C:/test и C:/test2.

Я хочу скопировать C:/test в C:/test2 так, чтобы в результате получилось C:/test2/test

Все, что я нашел до сих пор, скопирует только файлы и папки, содержащиеся в C:/test в C:/test2, но оставляет за собой родительский каталог.

Ответы (10)

52
52
52
2010-11-01 21:52:22 +0000

Попробуйте использовать XCOPY с переключателем /E. Дополнительная информация здесь .

Мне не приходилось получать доступ к этой информации из головного мозга в years!

UPDATE

В документации сказано, что она копирует все файлы и подкаталоги из исходного каталога (это означает, что родительский каталог не создается), поэтому сначала нужно создать test в C:\test2, а затем использовать XCOPY.

21
21
21
2015-11-22 21:23:05 +0000

Используйте ROBOCOPY, если вы создаете резервные скрипты. xcopy была устарела и, скорее всего, будет выведена из использования в ближайшем будущем. Робокопия может сделать все, что может xcopy. Она также более гибкая и надежная. Создание скриптов с помощью робокопии будет иметь будущее.

  • *
  1. Используйте робокопирование, чтобы легко копировать папки. Команда robocopy заменяет команду xcopy. Она может быстро скопировать целые папки, не беспокоясь о том, как определить их содержимое. Например, чтобы скопировать все содержимое каталога C:\tools в новую папку D:\backup\tools, введите следующее:

  2. Зеркально отобразить каталог. Зеркалирование каталога отлично подходит для создания резервных копий. Опция зеркального копирования робокопии скопирует все содержимое из источника в место назначения. Затем оно удалит все, что не существует в исходном коде. Это гарантирует, что ваша резервная копия будет содержать только последние версии файлов. Например, для зеркалирования C:\Users\My Documents to D:\backup\My Documents, введите следующее:[4]

  3. Включите перезапуск. Возможно, вы захотите включить возможность перезапуска процесса в случае разрыва соединения в середине копирования.

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

8
8
8
2010-11-02 03:09:24 +0000

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

Robocopy нужно добавить в XP/2003, но это стандартно, начиная с Vista.

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

5
5
5
2012-06-22 06:40:49 +0000
XCOPY SourceDrive: DestinationDrive: /S /E

Например, если вам нужно скопировать данные E: на диск H: (внешний жесткий диск) через командную строку или из командной среды xboot.

xboot:\>XCOPY E:\ "H:\BackupFolder\" /S /E
3
3
3
2016-04-29 18:29:05 +0000

Если исходный вопрос - это то, на что я искал ответ, то я, и, очевидно, никто из вышеперечисленных, не придумал ясного решения.

Что я ищу, так это скопировать тестовую директорию в директорию test2 без необходимости вводить ее снова. Что-то вроде

xcopy /isvy c:\test d:\test2

, где d:\test2\test не существует до копирования, а существует после. Это позволит сэкономить на неправильном вводе теста второй раз в пути назначения. Вышеприведенная команда скопирует все файлы и любые каталоги в test2, но не создаст каталог теста.

Пока что

xcopy /isvy c:\test d:\test2\test

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

Альтернативой исправлению является

set mydir=test&&xcopy /isvy c:\%mydir% c:\test2\%mydir%

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

Это больше времени, чтобы набирать, но меньше шансов получить неправильные имена. Они будут заметны.

1
1
1
2016-08-18 22:26:31 +0000
xcopy SWITCHES SOURCE DESTINATION

Где SWITCHES может быть:

  • Скопировать всю структуру каталога:

  • Перезаписать файлы в целевой папке (если целевая папка уже существует):

  • Перезаписать, а также скопировать с ACL+Attribute:

Не подходит для вашего случая:

xcopy /hievry C:\test C:\test2\test

0
0
0
2017-07-24 12:06:12 +0000

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

Во-первых, есть определённые случаи, когда эта способность понадобилась бы, и я столкнулся с ней, когда мне нужно было скопировать папки с C:\Windows\Assembly\GAC_MSIL. Проводник Windows отказывается показывать эту папку, поэтому вам нужно использовать интерпретатор команд.

Если вы знакомы с папкой GAC, вы знаете, что имена папок нетривиальны и их легко ошибиться, если вы ошибетесь.

Таким образом, создание папки заранее - если только вы не используете скрипт - на самом деле не вариант, который я в итоге использовал, так как это было единственным реальным решением.

Сначала дамп папок, которые вы хотите скопировать во временный файл, это обычно основано на каком-то шаблоне, например,

dir /B policy* > Folders.txt

Затем перебирайте записи в дампе и копируйте их по назначению. Xcopy позаботится о создании папки, если вы закончите аргумент назначения обратной косой чертой ()

for /F "tokens=*" %%A in (Folders.txt) do xcopy /E /S %%A C:\Dest\%%A\

Положите обе эти команды в пакетный файл и запустите.

Теперь, если только xcopy или robocopy имеет эту встроенную функцию.

0
0
0
2018-12-07 17:07:00 +0000

Я пришел к функциональному альтернативному ответу на ваш вопрос.

Во-первых, использование FORFILES с параметром /S означает, что каждый подкаталог в C:\test будет достигнут.

Во-вторых, с параметром /C можно запустить цепочку команд с нативными переменными, что позволяет создавать идентичные каталоги по назначению, и THEN копировать файлы внутрь них, используя две условные структуры.

Первая условная структура @isdir==TRUE (не забудьте использовать заглавные буквы), позволяет получать каталоги только из исходников, затем создавать их в destiny с MKDIR [path]\@relpath в конце.

Наконец, вторая проверяет, работает ли она с файлами только с @isdir==FALSE, а затем команда COPY просто выполняет работу, получая все файлы по команде FORFILES, устанавливая [path]@relpath в качестве адресата, чтобы скопировать файлы в только что созданные каталоги.

forfiles /s /c " cmd /c ( if @isdir==TRUE mkdir C:\test\@relpath ) && ( if @isdir==FALSE copy @file C:\test2\@relpath)"

Надежда, которая помогает всем здесь.

0
0
0
2018-05-15 05:24:03 +0000

XCOPY SourceDrive: DestinationDrive: /S /E

-2
-2
-2
2010-11-02 05:24:21 +0000

Это будет сделано из графического интерфейса, не знаю, как они это делают.

“…маленькая программа позволит вам выбрать "из каталога” и “в каталог”, и она перейдет к копированию ТОЛЬКО структуры каталога.“ http://www.rjlsoftware.com/software/utility/treecopy/

Похожие вопросы

3
19
10
28
6