Копирование файлов и документов в Windows: все способы

Копирование файлов и документов в Windows: все способы Полезное

Копирование файла в Windows — это создание независимого дубликата документа или папки в другом расположении: оригинал остается на месте, а копия существует отдельно от него. Копирование легко спутать с двумя соседними операциями — перемещением (оригинал исчезает из старой папки) и созданием ярлыка (появляется маленький файл-указатель, а не копия данных). Ниже — как их различать и шесть рабочих способов скопировать данные: мышью, горячими клавишами, через Проводник, из командной строки (copy, xcopy, robocopy), в PowerShell и программно на Python.

Копирование, перемещение и ярлык — в чем разница

Три операции внешне похожи, но делают разное. Разберем их до способов, иначе примеры покажутся противоречивыми.

Операция Что с оригиналом Данные на диске Связь с оригиналом
Копирование остается на месте дублируются полностью нет, копия независима
Перемещение удаляется из старой папки в пределах одного диска — переписывается только запись в каталоге (быстро); между дисками — копирование, затем удаление нет
Ярлык (.lnk) остается на месте почти не занимает (мелкий файл-ссылка) да; удалите оригинал — ярлык перестанет открываться

Практический вывод: копирование нужно для резервной копии и переноса на другой носитель, перемещение — для наведения порядка в пределах диска, ярлык — для быстрого доступа к одному и тому же файлу из нескольких мест.

Способ 1. Перетаскивание мышью

Самый наглядный способ. Важная тонкость: результат перетаскивания зависит от диска и удерживаемой клавиши, поэтому его часто путают.

  • Перетаскивание в пределах одного диска — по умолчанию перемещение.
  • Перетаскивание на другой диск — по умолчанию копирование.
  • Удерживать Ctrl при перетаскивании — принудительно копировать (рядом с курсором виден знак «+»).
  • Удерживать Shift — принудительно переместить.
  • Удерживать Ctrl+Shift (или Alt) — создать ярлык.

Чтобы не запоминать правила, перетаскивайте объект правой кнопкой мыши: при отпускании Windows покажет меню с явным выбором «Копировать», «Переместить» или «Создать ярлыки».

Способ 2. Горячие клавиши Ctrl+C / Ctrl+V

Универсальный способ, который работает и в Проводнике, и в большинстве программ. Выделите файлы (для группы — Ctrl+ЛКМ по каждому или Ctrl+A, чтобы выбрать все в папке), затем:

  • Ctrl+C — копировать выделенное в буфер обмена;
  • Ctrl+X — вырезать (перемещение: файл встанет в новое место, а из старого исчезнет);
  • Ctrl+V — вставить в открытую папку.

Если вставить копию в ту же папку, где лежит оригинал, Windows предложит сохранить обе версии с именем вида «документ — копия». Разница Ctrl+C и Ctrl+X — ровно та же, что копирования и перемещения из таблицы выше.

Способ 3. Контекстное меню и Проводник

Способ без клавиатуры. Кликните по файлу правой кнопкой мыши и выберите «Копировать» (в Windows 11 это иконка двух листов в верхней строке меню), перейдите в нужную папку, снова правая кнопка — «Вставить». То же есть на ленте Проводника: кнопки «Копировать» и «Вставить». Способ удобен, когда рук на клавиатуре нет или нужно именно выбрать действие явно.

Способ 4. Командная строка: copy и xcopy

Командная строка (cmd.exe) полезна для скриптов и повторяющихся задач. Базовая команда copy работает только с файлами и не заходит во вложенные папки:

copy "C:\data\report.docx" "D:\backup\"

Вывод при успехе:

        1 file(s) copied.

Для каталогов с вложенными папками используют xcopy:

xcopy "C:\data\project" "D:\backup\project" /E /I /H /Y

Флаги (только ASCII-дефис перед буквой): /E — копировать подпапки, включая пустые; /I — считать, что назначение это папка; /H — брать скрытые и системные файлы; /Y — перезаписывать без подтверждения. Утилита xcopy устаревшая: Microsoft оставляет ее для совместимости, но для новых сценариев рекомендует robocopy.

Способ 5. robocopy для больших объемов

robocopy (Robust File Copy) встроена в Windows начиная с Windows Vista и рассчитана на большие объемы: она устойчива к обрывам, умеет докопировать после сбоя и работать в несколько потоков.

robocopy "C:\data" "D:\backup" /E /Z /R:3 /W:5 /MT:16 /LOG:"D:\copy.log"

Здесь /E — копировать все подпапки, /Z — режим с продолжением после разрыва, /R:3 — до 3 повторов на файл с ошибкой, /W:5 — пауза 5 секунд между повторами, /MT:16 — 16 потоков копирования, /LOG: — писать отчет в файл.

Осторожно с флагом /MIR (зеркало): он не только копирует новое, но и удаляет в приемнике то, чего нет в источнике. Перед /MIR проверьте пути и сделайте резервную копию приемника — ошибка в пути сотрет чужие данные. У robocopy необычные коды возврата: значения от 0 до 7 означают успех (например, 1 — файлы скопированы), а 8 и выше — ошибку; это важно учитывать в скриптах, где принято считать успехом только код 0.

Способ 6. PowerShell: Copy-Item

В PowerShell копирование выполняет командлет Copy-Item. Один файл:

Copy-Item -Path "C:\data\report.docx" -Destination "D:\backup\"

Каталог целиком — с флагом -Recurse:

Copy-Item -Path "C:\data\project" -Destination "D:\backup\project" -Recurse

Copy-Item удобен, когда копирование — часть большого скрипта автоматизации: список файлов легко отфильтровать через Get-ChildItem и передать по конвейеру. Для терабайтных переносов он все же уступает robocopy по скорости и устойчивости.

Копирование файлов программно на Python (shutil)

Когда копирование нужно встроить в программу, а не в системный скрипт, помогает модуль shutil из стандартной библиотеки Python — он работает и в Windows, и в Linux, и в macOS.

import shutil

# копия одного файла БЕЗ метаданных (только данные и права доступа)
shutil.copy("C:/data/report.docx", "D:/backup/report.docx")

# копия файла С метаданными: сохраняет время изменения и создания
shutil.copy2("C:/data/report.docx", "D:/backup/report.docx")

# рекурсивное копирование каталога целиком
shutil.copytree("C:/data/project", "D:/backup/project", dirs_exist_ok=True)

# перемещение = копия + удаление исходника
shutil.move("C:/data/old.docx", "D:/archive/old.docx")

Разница copy и copy2 практическая: copy2 дополнительно переносит временные метки, поэтому для резервных копий обычно берут именно его. Параметр dirs_exist_ok=True в copytree доступен с Python 3.8 — без него команда падает с ошибкой, если папка-приемник уже существует. Ярлык (.lnk) стандартный shutil не создает: это объект самой Windows, для него нужен сторонний пакет (например, pywin32), тогда как копирование и перемещение доступны из коробки.

Как выбрать способ

Ориентируйтесь по задаче, а не по привычке:

  • Один-два файла вручную — перетаскивание или Ctrl+C/Ctrl+V.
  • Явно выбрать копирование против перемещения — правая кнопка мыши или контекстное меню.
  • Повторяющаяся операция в скрипте — copy/xcopy в cmd или Copy-Item в PowerShell.
  • Большой каталог, сеть, риск обрыва — robocopy с логом и повторами.
  • Копирование внутри своей программы — shutil на Python.

Выводы

  • Копирование создает независимый дубликат; перемещение убирает оригинал; ярлык — лишь ссылка на него. Это три разные операции, а не варианты одной.
  • Перетаскивание внутри диска по умолчанию перемещает, между дисками — копирует; Ctrl форсирует копию, Shift — перемещение, Ctrl+Shift или Alt — ярлык.
  • Для файлов из командной строки подойдет copy, для деревьев папок — xcopy, для больших и сетевых объемов — robocopy (с оговоркой про /MIR).
  • В скриптах копируют через PowerShell Copy-Item, а в программах на Python — через shutil.copy2 и copytree.

Где применяется / связь с практикой

Освойте тему на практике

Ручное копирование быстро упирается в рутину: ежедневный бэкап, раскладка отчетов по папкам, сборка файлов из десятков источников. Все это автоматизируется кодом — и shutil из примеров выше это первый шаг. Разобраться с файловыми операциями, путями и запуском скриптов по расписанию помогает системное обучение основам языка — например, курс Python Basic, где работа с файлами и модулем shutil разбирается на практике. Посмотреть формат занятий и темы можно на открытых уроках Otus — они бесплатны и проходят онлайн.

Смежные темы: Командная строка: описание, особенности, полезные операции, Командная строка: как активировать файл в Windows, Windows и другие ОС: принципы работы.

FAQ

Как скопировать сразу несколько файлов? Выделите их с зажатым Ctrl (по одному) или рамкой мыши, либо Ctrl+A для всей папки, затем копируйте любым способом — Ctrl+C, контекстным меню или перетаскиванием с Ctrl.

Почему при перетаскивании файл переместился, а не скопировался? Перетаскивание в пределах одного диска по умолчанию перемещает. Чтобы гарантированно скопировать, удерживайте Ctrl во время перетаскивания или перетаскивайте правой кнопкой мыши и выбирайте «Копировать» в меню.

Что делать, если копирование большого объема прерывается? Используйте robocopy с флагами /Z (продолжение после обрыва) и /R:n /W:n (повторы с паузой); она докопирует недостающее, не начиная заново весь объем.

OTUS Журнал
Скидка 5% 14-20 сентября на курсы (popup)