- Команда XCOPY — копирование файлов и каталогов.
- Примеры использования XCOPY
- 5 способов копирования файлов. Кто больше?
- Способ 1 — несколько окон Проводника.
- Способ 2: Терпеливое перетаскивание.
- Способ 3: Использование функций Вырезать, Скопировать и Вставить.
- Способ 4: Добавление скрытых строк в контекстное меню Проводника.
- Способ 5. Использование альтернативных браузеров с двумя панелями.
- Команда cp: правильное копирование папок с файлами в *nix
- Выводы
- Послесловие
Команда XCOPY — копирование файлов и каталогов.
Команда 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 командной строки переопределяет такую установку.
Примеры использования XCOPY
XCOPY /? — выдать краткую справку по использованию команды.
xcopy C:\users D:\copy1 — скопировать файлы из каталога C:\users в каталог D:\copy1 . Будет выполняться копирование без подкаталогов и только файлов без атрибутов «Скрытый» и «Системный». Для скопированных файлов будет установлен атрибут Архивный . Если каталог, в который выполняется копирование, не существует, то пользователю будет выдано сообщение:
Что означает 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.
Если вы желаете поделиться ссылкой на эту страницу в своей социальной сети, пользуйтесь кнопкой «Поделиться»
Источник
5 способов копирования файлов. Кто больше?
Перетаскивание, как правило, является самым быстрым и простым способом скопировать или переместить файлы и папки из одного места в другое. Этот способ работает, только если папку-источник и папку-приемник можно увидеть одновременно.
Но, что делать, если целевая папка не видна в момент начала перетаскивания?
Способ 1 — несколько окон Проводника.
Если у вас достаточно большой экран, вы прямо-таки обязаны открывать несколько окон Проводника. В одном окне открываем папку источник и выделяем нужные файлы, а во втором — открываем папку получатель. И дальше — в соответствии с правилами перемещения копируем или переносим файлы.
Способ 2: Терпеливое перетаскивание.
Перейдите к папке-источнику. Перетащите выделенные файлы в область дерева папок. Задержите курсор мыши над видимой ветвью папки назначения, и Проводник автоматически развернет эту ветвь.
Если задержать курсор мыши вблизи верхнего или нижнего края Области навигации, чтобы переместиться вверх или вниз. Если папка назначения, которую вы ищете, глубоко спрятана, придется ждать, пока Проводник развернет каждый уровень.
Здесь нужно не только терпение, но и твердая рука!
Способ 3: Использование функций Вырезать, Скопировать и Вставить.
Выберите один или несколько файлов, которые хотите скопировать, щелкните правой кнопкой мыши на них и выберите Копировать, чтобы скопировать объекты, или Вырезать, чтобы переместить их.
Список выделенных файлов помещается в буфер. А теперь откройте папку назначения, щелкните правой кнопкой мыши на свободной области правой панели и выберите Вставить или нажмите Ctrl+V.
Способ 4: Добавление скрытых строк в контекстное меню Проводника.
Контекстное меню Windows 7 имеет пару удобных пунктов: Копировать в папку и Переместить в папку, но по умолчанию они скрыты.
Откройте редактор реестра и перейдите к
Как открыть редактор реестра
Откройте командную строку с помощью сочетания клавиш Win+R и введите regedit. Для Windows 7 нужно открыть с правами администратора.
Выделите раздел ContextMenuHandlers, а затем из меню Правка выберите Создать и далее Раздел .
Введите имя нового раздела:
Этот раздел добавляет команду Копировать в папку.
Создайте второй раздел и назовите его
Подсказка: этот идентификатор класса отличается от предыдущего одним символом на восьмой позиции. А еще проще — скопируйте прямо отсюда (вместе с фигурными скобками) и вставьте в поле для ввода имени.
Этот раздел добавляет команду Переместить в папку.
Закройте редактор реестра и щелкните правой кнопкой мыши на любом файле, папке или диске. Теперь в контекстном меню появятся пункты Копировать в папку и Переместить в папку.
Тоже самое можно сделать и с помощью программ-твикеров, которые используются для тонкой настройки Windows.
Если у вас нет установленных твикеров, посмотрите, может быть у вас есть одна из программ оптимизаторов, описание которых есть в избытке на блоге.
У меня всегда под рукой есть Anvir Task Manager, у которого в главном меню есть пункт — Инструменты — Tweaker.
Этот способ работает и в Windows 7, и в Windows XP.
Способ 5. Использование альтернативных браузеров с двумя панелями.
Например — Total Commander. Панель справа, панель слева. Одна — с исходными файлами, другая — с папкой получателем. Можно перетянуть выделенные файлы мышкой, можно скопировать по кнопке F5 (или переместить по кнопке F6). Бесплатно скачать Total Commander.
Источник
Команда cp: правильное копирование папок с файлами в *nix
В этой статье будут раскрыты некоторые неочевидные вещи связанные с использованием wildcards при копировании, неоднозначное поведение команды cp при копировании, а также способы позволяющие корректно копировать огромное количество файлов без пропусков и вылетов.
Допустим нам нужно скопировать всё из папки /source в папку /target.
Первое, что приходит на ум это:
Сразу исправим эту команду на:
Ключ -a добавит копирование всех аттрибутов, прав и добавит рекурсию. Когда не требуется точное воспроизведение прав достаточно ключа -r .
После копирования мы обнаружим, что скопировались не все файлы — были проигнорированы файлы начинающиеся с точки типа:
.profile
.local
.mc
и тому подобные.
Почему же так произошло?
Потому что wildcards обрабатывает shell ( bash в типовом случае). По умолчанию bash проигнорирует все файлы начинающиеся с точек, так как трактует их как скрытые. Чтобы избежать такого поведения нам придётся изменить поведение bash с помощью команды:
Чтобы это изменение поведения сохранилось после перезагрузки, можно сделать файл wildcard.sh c этой командой в папке /etc/profile.d (возможно в вашем дистрибутиве иная папка).
А если в директории-источнике нет файлов, то shell не сможет ничего подставить вместо звёздочки, и также копирование завершится с ошибкой. Против подобной ситуации есть опции failglob и nullglob . Нам потребуется выставить failglob , которая не даст команде выполниться. nullglob не подойдёт, так как она строку с wildcards не нашедшими совпадения преобразует в пустую строку (нулевой длины), что для cp вызовет ошибку.
Однако, если в папке тысячи файлов и больше, то от подхода с использованием wildcards стоит отказаться вовсе. Дело в том, что bash разворачивает wildcards в очень длинную командную строку наподобие:
На длину командной строки есть ограничение, которое мы можем узнать используя команду:
Получим максимальную длину командной строки в байтах:
Получим что-то типа:
Итак, давайте будем обходиться вовсе без wildcards.
Давайте просто напишем
И тут мы столкнёмся с неоднозначностью поведения cp . Если папки /target не существует, то мы получим то, что нам нужно.
Однако, если папка target существует, то файлы будут скопированы в папку /target/source.
Не всегда мы можем удалить заранее папку /target, так как в ней могут быть нужные нам файлы и наша цель, допустим, дополнить файлы в /target файлами из /source.
Если бы папки источника и приёмника назывались одинаково, например, мы копировали бы из /source в /home/source, то можно было бы использовать команду:
И после копирования файлы в /home/source оказались бы дополненными файлами из /source.
Такая вот логическая задачка: мы можем дополнить файлы в директории-приёмнике, если папки называются одинаково, но если они отличаются, то папка-исходник будет помещена внутрь приёмника. Как скопировать файлы из /source в /target с помощью cp без wildcards?
Чтобы обойти это вредное ограничение мы используем неочевидное решение:
Те кто хорошо знаком с DOS и Linux уже всё поняли: внутри каждой папки есть 2 невидимые папки «.» и «..», являющиеся псевдопапками-ссылками на текущую и вышестоящие директории.
- При копировании cp проверяет существование и пытается создать /target/.
- Такая директория существует и это есть /target
- Файлы из /source скопированы в /target корректно.
Итак, вешаем в жирную рамочку в своей памяти или на стене:
Поведение этой команды однозначно. Всё отработает без ошибок вне зависимости от того миллион у вас файлов или их нет вовсе.
Выводы
Если нужно скопировать все файлы из одной папки в другую, не используем wildcards, вместо них лучше использовать cp в сочетании с точкой в конце папки-источника. Это скопирует все файлы, включая скрытые и не завалится при миллионах файлов или полном отсутствии файлов.
Послесловие
vmspike предложил аналогичный по результату вариант команды:
ВНИМАНИЕ: регистр буквы T имеет значение. Если перепутать, то получите полную белиберду: направление копирования поменяется.
Благодарности:
Источник