Что такое команда командной строки Windows для копирования файлов?

34

Что такое команда командной строки Windows для копирования файлов?

Мне нужно переместить файл из местоположения A в местоположение B. Также, если папка для местоположения B не существует, я хочу, чтобы он был создан.

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

Версия Windows - XP.

Дэвид Басараб
источник
1
robocopyтоже отлично работает
Nixphoe

Ответы:

44

Команда xcopy- это то, что вы ищете. Пример:

xcopy source destination /E /C /H /R /K /O /Y

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

/E    Copies directories and subdirectories, including empty ones.
      Same as /S /E. May be used to modify /T.
/C    Continues copying even if errors occur.
/H    Copies hidden and system files also.
/R    Overwrites read-only files.
/K    Copies attributes. Normal Xcopy will reset read-only attributes.
/O    Copies file ownership and ACL information.
/Y    Suppresses prompting to confirm you want to overwrite an
      existing destination file.

Для получения дополнительной информации введите xcopy /?и вашу командную строку.

Строймеханизация
источник
2
Будущие версии Windows включают RoboCopy. Из XCOPY в Vista: «ПРИМЕЧАНИЕ: Xcopy устарела, используйте Robocopy».
Джордж Циокос
1
Интересно, что спустя два года после вашего комментария Джордж, xcopy по-прежнему «правит миром» в Windows 7.
Обратите внимание, что встроенные среды Windows XP (POSReady 2009 и т. Д.) Не поставляются с xcopy.
Epoc
Я предложил изменить список всех этих опций ...! Если вы не автоматизируете его /E /Hи, возможно, /K /Oпроделаете долгий путь с несколькими удобными подсказками
KCD
Не забывайте /J, что предотвращает ошибку с XCopy при копировании больших файлов. Я не уверен, почему они не сделали бы это по умолчанию ...
BlueRaja
8

Используйте md для создания папки (это нормально, если она уже существует)

Используйте копирование или перемещение для файлов, а xcopy для папок.

Дани
источник
Можете ли вы привести пример синтаксиса?
Дэвид Басараб
3
copy fred.txt copy_of_fred.txt
Адам Гиббинс
1
копия /? даст вам текст справки, вроде справочной страницы DOS.
Скотти Т
2

В пакетном файле:

if not exists locationB\nul mkdir locationB
copy locationA\file locationB

if not existsпроверяет параметр, чтобы увидеть, существует ли он, но он работает только с файлами. Чтобы проверить существование каталога , вам нужно найти «псевдофайл» с именем «nul» - проверка существования этого файла всегда вернет true, если каталог существует.

В копии строки копирует файл с именем fileв каталоге , locationAчтобы locationBи имена файла то же самое. Если вы хотите переименовать файл одновременно, вы можете сделать это тоже:

copy locationA\file locationB\newfilename
Грэм Перроу
источник
2

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

Ричард
источник
Для всего важного, я собираюсь пойти с robocopy, а также. Кажется, я помню огромную разницу в производительности по сравнению с xcopy при синхронизации большого количества файлов.
Кара Марфия
1

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


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

    robocopy C:\tools D:\backup\tools /e
    

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

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

    robocopy "C:\Users\My Documents" "D:\backup\My Documents" /mir
    

    Эта функция сохранит все разрешения исходных файлов.

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

    robocopy "C:\Users\My Documents" "D:\backup\My Documents" /z
    
  4. Записать процесс копирования. robocopy позволяет создать файл журнала. Это может помочь вам точно определить проблемы или создать архив того, что было скопировано.

    robocopy "C:\Users\My Documents" "D:\backup\My Documents" /log+:<filename>.txt
    

    Модификатор / log + добавит существующий файл журнала вместо его перезаписи. Если вы предпочитаете просто перезаписать старый файл журнала, используйте /log:.txt.

Программа-Me-Rev
источник
0

xcopy создаст структуру каталогов для вас. Хитрость заключается в том, чтобы использовать параметр / I и добавить звездочку в конце имени файла, чтобы xcopy решил, что вы копируете несколько файлов, в противном случае он спрашивает, является ли целевое имя нужным вам именем файла или нужным именем каталога. , Например.

xcopy /I c:\<SourceDir>\<SourceFile> c:\<TargetDirThatDoesNOTExist>

Я бы также посмотрел на RoboCopy, но вам нужно получить его из комплекта ресурсов, так как он не доступен в Windows до Vista.

WaldenL
источник
-1

Приведенная выше команда создает дополнительный уровень каталога с именем исходного файла. Итак ... xcopy / I srcdir \ dir1 \ dir2 \ file1.txt * destdir \ dir1 \ dir2 \ file1.txt приводит к destdir \ dir1 \ dir2 \ file1.txt \ file1.txt

Джефф
источник
1
Не имеет смысла отвечать на такой старый вопрос, на который уже есть принятый ответ и который не добавляет добавленной стоимости вашему ответу.
alphamikevictor