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


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


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


0

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

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

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

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


К сожалению, у нас есть файлы без расширений. От .placeholder для репозитория кода, до некоторых конкретных файлов данных.
Ладья

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

0

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



-1

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

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


3
Хорошо удаляет файлы, но кто сказал, что имена папок также не могут содержать точку / точку?
Каран
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.