41

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

9 ответов9

40

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

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

28

Ага. XCOPY

XCopy source {destination}  /t

пример

xcopy C:\Folders D:\Folders /t

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

17

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

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

2

Метод 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

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

0

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

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

0

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

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

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

open_directory($ путь);
while($ file = get_directory_content) {
if(пусто (get_file_extension ($ file)))) {
copy_the_file ($ файла, $ назначения);
}
}
close_directory;

-1

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .