У меня есть папка с множеством подпапок и файлов в них. Есть ли способ скопировать структуру каталогов папок и подпапок, не копируя содержащиеся в них файлы, используя cmd или powershell?
9 ответов
Если вы хотите скопировать пустые папки, а также.
xcopy C:\ Папки D:\ Папки / т / е
Ага. XCOPY
XCopy source {destination} /t
пример
xcopy C:\Folders D:\Folders /t
больше о xcopy можно найти здесь http://ss64.com/nt/xcopy.html
Хотя XCOPY все еще работает, Windows Vista и более поздние версии включают ROBOCOPY, которая имеет больше функций. Общий синтаксис для копирования дерева папок (включая пустые папки) без файлов:
robocopy "A:\Source folder" "B:\Destination folder" /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
, что справедливо для каталогов, но не для файлов.
Посмотрите на приложение 47folders, бесплатный удобный инструмент для Windows, который делает именно то, что вам нужно, через приятный графический интерфейс.
ВНИМАНИЕ: Бывшая ссылка (http://47foldersapp.com/) сейчас (ноябрь 2017) ведет к рекламе одежды. Последняя хорошая копия интернет-архива здесь. Программное обеспечение все еще может быть доступно на бесплатных сайтах загрузки, таких как этот.
Используйте PowerShell, чтобы сделать это с помощью. Сделайте копию папки и затем Remove-Item -Path "C:\test\*.*" -recurse
Я просто использовал бесплатный Miroirs, который очень просто копировал только папки, а не содержимое (хотя это вариант).
Возможно, есть лучшее решение, но я бы увидел это:
Скопируйте все, затем очистите папки с помощью скрипта.
Сделайте скрипт, который будет копировать все, если у него нет расширения. Если у вас нет файлов без расширений в папках, чего у вас не должно быть, это должно работать, потому что, хорошо. Папки не имеют расширений. Что-то похожее на псевдокод:
open_directory($ путь);
while($ file = get_directory_content) {
if(пусто (get_file_extension ($ file)))) {
copy_the_file ($ файла, $ назначения);
}
}
close_directory;
Насколько я знаю, есть стороннее программное обеспечение, которое может предоставить эту функцию, если вы хотите сделать с командной строкой, то команда копирования существует. введите команду help copy в cmd, которая содержит подробные сведения о том, как копировать файлы через cmd.
после копирования зайдите в папку через cmd и запустите команду
del*.*который удаляет файлы, потому что папки не имеют. персонаж