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

47

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

ладья
источник

Ответы:

45

Если вы хотите скопировать пустые папки, а также.

xcopy C: \ Папки D: \ Папки / т / е

Майкл Мэнтион
источник
1
правильно /e, тоже надо использовать.
1
XCOPY Сборка в Powershell по умолчанию и работает отлично.
BenCes
29

Ага. XCOPY

XCopy source {destination}  /t

пример

xcopy C:\Folders D:\Folders /t

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

BroScience
источник
5
Вы должны добавить /eдля копирования также пустые папки
18

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

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

Теодор
источник
3

Метод 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свойства, что справедливо для каталогов, но не для файлов.

Бен Н
источник
Это супер быстро!
Редми
1

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

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

andymcgregor
источник
0

Возможно, есть лучшее решение, но я бы увидел это:

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

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

open_directory ($ путь);
while ($ file = get_directory_content) {
if (empty (get_file_extension ($ file)))) {
copy_the_file ($ file, $ destination);
}
}
close_directory;

Ariane
источник
К сожалению, у нас есть файлы без расширений. От .placeholder для репозитория кода, до некоторых конкретных файлов данных.
Ладья
Ой. Что ж. Может быть, тогда есть (если это папка). Но хм Похоже, что описанная выше копия xcopy подходит именно вам. Если это не так, в этом случае вы можете запустить скрипт для 1. копирования всех папок и 2. очистки всех папок. Или что-то. Но это ... долго. xD
Ариана
0

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

user1586957
источник
-1

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

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

Вишал
источник
3
Хорошо удаляет файлы, но кто сказал, что имена папок также не могут содержать точку / точку?
Каран