Как сказано в заголовке, как я могу рекурсивно скопировать структуру каталогов, но включить только некоторые файлы. Например, учитывая следующую структуру каталогов:
folder1
folder2
folder3
data.zip
info.txt
abc.xyz
folder4
folder5
data.zip
somefile.exe
someotherfile.dll
Файлы data.zip и info.txt могут появляться везде в структуре каталогов. Как я могу скопировать всю структуру каталогов, но включить только файлы с именами data.zip и info.txt (все остальные файлы следует игнорировать)?
Результирующая структура каталогов должна выглядеть так:
copy_of_folder1
folder2
folder3
data.zip
info.txt
folder4
folder5
data.zip
*.zip
работал у меня.Альтернативное решение, которое копирует по одному файлу за раз и не требует ROBOCOPY:
Внешний оператор for генерирует любую возможную комбинацию путей подкаталога в
SOURCE_DIR
и имени вFILENAMES_TO_COPY
. Для каждого существующего файла вызывается xcopy.FILE_INTERMEDIATE_DIR
содержит путь к подкаталогу файла, вSOURCE_DIR
котором необходимо создатьDEST_DIR
.источник
set FILENAMES_TO_COPY=data.zip info.txt
выше наset FILENAMES_TO_COPY=*.jpg
set "SOURCE_DIR=C:\Origin Test"
иset "DEST_DIR=C:\Dest Test"
. Обратите внимание на размещение двойных кавычек.попробуйте передать вывод find (то есть путь к файлу) в cpio
cpio проверяет метку времени в целевых файлах - так что это безопасно и быстро.
remove -v для более быстрой операции, как только вы к ней привыкнете.
источник
Если Powershell - вариант, вы можете сделать это:
Основным недостатком является копирование всех папок, даже если они останутся пустыми, потому что ни один файл не соответствует указанному вами фильтру. Таким образом, вы можете получить дерево, полное пустых папок, в дополнение к нескольким папкам, в которых есть нужные вам файлы.
источник
rm -r -ErrorAction:SilentlyContinue d:\destinationPath
перед копированием, чтобы исправить это.Спасибо за предыдущие ответы. :)
Этот сценарий называется «r4k4copy.cmd»:
Он принимает переменные «Источник», «Назначение» и «Имя файла». Он также может копировать только файлы указанного типа или отдельные имена файлов.
Любые улучшения приветствуются. :)
источник
Только с find и cp:
источник
Подобно решению Паулиуса, но файлы, которые вам не нужны, не копируются, а затем удаляются:
источник
Чтобы скопировать все текстовые файлы в G: и сохранить структуру каталогов:
источник
Это всего лишь две простые команды, но я бы не рекомендовал это, если только файлы, которые вам НЕ нужно копировать, маленькие. Это потому, что это скопирует ВСЕ файлы, а затем удалит файлы, которые не нужны в копии.
Конечно, вторая команда довольно длинная, но она работает!
Кроме того, этот подход не требует загрузки и установки каких-либо сторонних инструментов (в Windows 2000+ BATCH для этого достаточно команд).
источник
В Linux и других системах UNIX
tar
это легко сделать с помощью команды.Затем вы идете к цели и:
Конечно, вы можете направить вывод из первого tar во второй, но увидеть, как он работает поэтапно, легче понять и объяснить. Мне не хватает необходимого cd / to / new / path / в следующей команде - я просто не помню, как это сделать сейчас. Надеюсь, кто-нибудь еще сможет это добавить.
Tar (gnutar) также доступен в Windows, но я, вероятно, сам использовал бы этот
xcopy
метод на этой платформе.источник
РЕДАКТИРОВАТЬ: если вы хотите сохранить пустые папки (которые, похоже, при повторном прочтении вашего сообщения) используйте / E вместо / S.
источник
Используя интерфейс командной строки WinRAR, вы можете скопировать имена файлов и / или типы файлов в архив. Затем вы можете извлечь этот архив в любое удобное для вас место. Это сохраняет исходную файловую структуру.
Мне нужно было добавить на мобильный телефон отсутствующие файлы изображений альбома, не копируя саму музыку. К счастью, структура каталогов на моем компьютере и мобильном телефоне была одинаковой!
Я использовал:
В результате был создан архив со всеми файлами Folder.jpg в соответствующих подкаталогах.
Этот метод также можно использовать для копирования типов файлов. Если бы все файлы имели разные имена, вы могли бы извлечь все файлы в один каталог. Дополнительные параметры командной строки позволяют архивировать файлы нескольких типов.
Дополнительная информация по этой очень полезной ссылке http://cects.com/using-the-winrar-command-line-tools-in-windows/
источник
Для тех, кто использует Altap Salamander (двухпанельный файловый менеджер): в параметрах всплывающего окна «Копировать» просто укажите имена файлов или маски. Легко.
источник
Я хорошо отношусь к регулярным выражениям, ленив и не люблю установку, поэтому я создал командный файл, который создает каталог и копирует его с помощью обычных команд DOS. Кажется трудоемким, но для меня быстрее, чем разработка робокопии.
(.*)
заменит строку"\1"
и нажмите заменить все(.*)
замените строкуmd qqq\1\nxcopy \1 qqq\1\n
и нажмите заменить все\\([^\\^"]+)"\n
заменить\\"\n
A:\src
иB:\dest
). Отключите регулярные выражения, выполните поиск поqqq"A:\src\
заменеB:\dest\
и щелкните заменить все.md создаст вложенные каталоги. copy, вероятно, будет вести себя идентично xcopy в этом примере. Возможно, вы захотите добавить / Y в xcopy, чтобы подавить подтверждение перезаписи. В результате вы получите такой командный файл:
повторяется для каждого файла в исходном списке. Проверено на Win7.
источник
Чтобы сделать это с помощью перетаскивания, используйте winzip, есть опция сохранения структуры каталога. Просто создайте новый .zip на уровне каталога, который будет вашим корнем, и перетащите туда файлы.
источник