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


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.