Как скопировать структуру каталогов без копирования файлов?

Вопрос или проблема

У меня есть папка с множеством подкаталогов и файлами в них. Есть ли способ скопировать папку и структуру подкаталогов без копирования содержащихся в них файлов, используя cmd или powershell?

Это скопирует полную структуру подкаталогов, содержащуюся в исходной директории, в целевую директорию, не включая никаких файлов.

xcopy <source> [<destination>] /t /e
Опция Описание
/t

 

Копирует только структуру подкаталогов (то есть дерево), а не файлы. Чтобы скопировать пустые директории, необходимо
включить опцию командной строки /e.
/e
 
Копирует все подкаталоги, даже если они пустые.
Используйте /e с командными опциями /s и /t.

Документация Microsoft:   команда xcopy

Да. XCOPY

XCopy source {destination}  /t

пример

xcopy C:\Folders D:\Folders /t

больше информации о xcopy можно найти здесь http://ss64.com/nt/xcopy.html

Хотя XCOPY все еще работает, Windows Vista и более поздние версии включают ROBOCOPY, который имеет больше возможностей. Общий синтаксис для копирования дерева папок (включая пустые папки) без файлов:

robocopy "A:\Исходная папка" "B:\Целевая папка" /e /xf *

Метод PowerShell, который не требует копирования каждого файла и последующего их удаления:

Copy-Item -LiteralPath '.\source' -Destination 'C:\path\to\copy' -Recurse -Filter {PSIsContainer -eq $true}

Или более сжато:

copy .\source C:\path\to\copy -r -fi PSIsContainer

Единственный интересный трюк здесь – фильтрация по свойству PSIsContainer, которое истинно для каталогов, но не для файлов.

Я только что использовал бесплатную программу Miroirs, которая очень просто копировала только папки, не копируя содержимое (хотя это опция).

http://www.scanialabs.com/Products/Miroirs/Miroirs.aspx

Посмотрите на приложение 47folders, бесплатный, удобный инструмент для Windows, делает именно то, что вам нужно, через красивый интерфейс.
введите описание изображения здесь

ПРЕДУПРЕЖДЕНИЕ: Предыдущая ссылка (http://47foldersapp.com/) теперь (ноябрь 2017) ведет к рекламе одежды.
Последняя хорошая копия из Интернет-архива здесь.
Программное обеспечение все еще может быть доступно на сайтах загрузки бесплатного ПО,
таких как это.

Наверное, есть лучшее решение, но я бы рассмотрел эти:

  • Скопируйте все, затем очистите папки с помощью скрипта.

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

open_directory($path);
while($file=get_directory_content) {
if(empty(get_file_extension($file))) {
copy_the_file($file,$destination);
}
}
close_directory;

насколько мне известно, есть стороннее программное обеспечение, которое может предоставить эту функциональность. Если вы хотите сделать это с помощью командной строки, то команда копирования доступна. Введите
help copy в cmd, что предоставляет детали о том, как копировать файлы через cmd.
после копирования перейдите в папку через cmd и выполните команду

del*.*

которая удаляет файлы, потому что папки не имеют символа .

Используйте PowerShell для этого. Сделайте копию папки, а затем
Remove-Item -Path "C:\test\*.*" -recurse

Ответ или решение

Копирование структуры каталогов без файлов является распространенной задачей для IT-специалистов. В этой статье мы рассмотрим несколько способов выполнения этой операции, используя как командную строку Windows (cmd), так и PowerShell, а также сторонние инструменты.

Копирование структуры каталогов с помощью командной строки (cmd)

Используя команду xcopy, можно скопировать структуру каталогов без файлов. Для этого используйте следующую команду:

xcopy <source> <destination> /t /e

Параметры:

  • /t — копирует только структуру подкаталогов, без файлов.
  • /e — копирует все подкаталоги, включая пустые.

Пример:

xcopy C:\SourceFolder D:\DestinationFolder /t /e

Эта команда создаст в папке D:\DestinationFolder полную структуру каталогов папки C:\SourceFolder, но не будет копировать файлы, находящиеся в этих подкаталогах.

Копирование с помощью ROBOCOPY

Начиная с Windows Vista, можно использовать более мощный инструмент ROBOCOPY. Эта команда также позволяет копировать только структуру каталогов без файлов. Общая синтаксическая структура:

robocopy "A:\Source folder" "B:\Destination folder" /e /xf *

Параметры:

  • /e — означает, что будут скопированы все подкаталоги, включая пустые.
  • /xf * — исключает все файлы (шаблон "*", который соответствует всем файлам).

Использование PowerShell

PowerShell предоставляет возможность копирования структуры каталогов более "чистым" и гибким способом. Для этого можно воспользоваться следующей командой:

Copy-Item -LiteralPath '.\source' -Destination 'C:\path\to\copy' -Recurse -Filter {PSIsContainer -eq $true}

Или более лаконично:

Copy .\source C:\path\to\copy -r -fi PSIsContainer

Описание команды:

  • -Recurse — рекурсивно копирует все подкаталоги.
  • -Filter {PSIsContainer -eq $true} — фильтрует элементы, оставляя только каталоги.

Сторонние инструменты

Если программное обеспечение сторонних производителей приемлемо для вас, существуют программы, такие как Miroirs и 47Folders, которые позволяют легко скопировать только структуру каталогов с графическим интерфейсом. Эти приложения предлагают интуитивные функции без необходимости прописывать команды.

Заключение

Существует несколько способов копирования структуры каталогов без файлов в Windows. Используя командную строку с xcopy или ROBOCOPY, а также PowerShell, вы можете легко и эффективно выполнять данную задачу. Сторонние программы предлагают еще более удобные варианты для пользователей, предпочитающих графические интерфейсы. Выбор зависит от ваших потребностей и предпочтений.

Оцените материал
Добавить комментарий

Капча загружается...