Що таке командний рядок Windows для копіювання файлів?


34

Що таке командний рядок Windows для копіювання файлів?

Мені потрібно перемістити файл з місця А в місце 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вам
подобається

Не забувайте /J, що запобігає помилку з XCopy при копіюванні великих файлів. Я не впевнений, чому вони не зробили б це за замовчуванням ...
BlueRaja

8

Використовуйте md для створення папки (це нормально, якщо вона вже існує)

Використовуйте копіювання або переміщення для файлів, а xcopy - для папок


Чи можете ви надати мені приклад синтаксису?
Девід Басараб

3
copy fred.txt copy_of_fred.txt
Адам Гіббінс

1
копія /? надасть вам текст довідки, подібний до довідної сторінки DOS.
Scottie T

2

У пакетному файлі:

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

if not existsперевіряє параметр, щоб перевірити, чи він існує, але він працює лише у файлах. Щоб перевірити наявність каталогу , потрібно шукати "псевдофайл" під назвою "нуль" - перевірка на наявність цього файлу завжди повернеться істинним, якщо каталог існує.

У копії рядка копіює файл з ім'ям fileв каталозі , locationAщоб locationBі імена файлу те ж саме. Якщо ви хочете одночасно перейменувати файл, ви також можете це зробити:

copy locationA\file locationB\newfilename

2

Якщо ви хочете можливість синхронізувати копію та інші вдосконалені функції (ігноруйте певні папки, включайте лише певні підстановки), тоді подивіться robocopy. Додано до Vista та за її межами, необов'язково (із інструментів набору ресурсів) у попередніх версіях.


Що-небудь важливе, я також збираюся зайнятися роботопією. Я, здається, пам’ятаю величезну різницю в продуктивності порівняно з xcopy при синхронізації великої кількості файлів.
Кара Марфія

1

Використовуйте ROBOCOPY, якщо ви створюєте сценарії резервного копіювання. xcopy застарілий і, ймовірно, найближчим часом буде припинено використання. робокопія може робити все, що може xcopy. Він також більш гнучкий і надійний. Створення скриптів за допомогою роботокопії підтвердить їх у майбутньому.


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

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

    Модифікатор / e повідомляє роботокопії включати всі підкаталоги. Сюди входять порожні папки. робокопія автоматично копіює приховані та системні файли. Він створить нові каталоги, якщо вони не існують у цільовому місці.

  2. Дзеркало каталогу. Дзеркальне відображення каталогу чудово підходить для створення резервних копій. Опція дзеркала роботокопії буде копіювати весь вміст з джерела до місця призначення. Потім буде видалено все, що не існує в джерелі призначення. Це гарантує, що у вашій резервній копії є лише найновіші версії ваших файлів. Наприклад, для дзеркального відображення C: \ Users \ My Documents to 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 "C:\Users\My Documents" "D:\backup\My Documents" /log+:<filename>.txt
    

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


0

xcopy створить структуру каталогу для вас. Трюк полягає в тому, щоб скористатися параметром / я і кинути зірочку в кінці імені файлу, так що xcopy вважає, що ви копіюєте декілька файлів, інакше він запитає, чи є цільове ім'я потрібного імені файлу, або ім'я каталогу, яке ви хочете . Наприклад.

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

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


-1

Вищевказана команда створює додатковий рівень каталогу з іменем вихідного файлу. Отже ... xcopy / I srcdir \ dir1 \ dir2 \ file1.txt * destdir \ dir1 \ dir2 \ file1.txt призводить до destdir \ dir1 \ dir2 \ file1.txt \ file1.txt


1
Не має сенсу відповідати на таке давнє запитання, на яке вже є прийнята відповідь і не внесете певної вартості у вашу відповідь.
alphamikevictor
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.