Вопрос или проблема
У меня есть папка с множеством подкаталогов и файлами в них. Есть ли способ скопировать папку и структуру подкаталогов без копирования содержащихся в них файлов, используя 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, которая очень просто копировала только папки, не копируя содержимое (хотя это опция).
Посмотрите на приложение 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, вы можете легко и эффективно выполнять данную задачу. Сторонние программы предлагают еще более удобные варианты для пользователей, предпочитающих графические интерфейсы. Выбор зависит от ваших потребностей и предпочтений.