Как скопировать структуру каталогов без копирования файлов?
У меня есть папка с кучей подпапок и файлов в них. Есть ли способ скопировать структуру папок и подпапок без копирование файлов, которые они содержат, с помощью cmd или powershell?
9 ответов
Если вы хотите скопировать пустые папки, а также.
команда xcopy C:\Folders D:\Folders /т /е
подробнее о команде xcopy можно найти здесь http://ss64.com/nt/xcopy.html
хотя XCOPY все еще работает, Windows Vista и более поздние версии включают ROBOCOPY, который имеет больше возможностей. Общий синтаксис копирования дерева папок (включая пустые папки) без файлов:
robocopy «A:\Source folder» «B:\Destination folder» /e /xf *
PowerShell метод, который не требует копирования каждого файла, а затем удалить их:
или более лаконично:
единственный интересный трюк здесь фильтрация на PSIsContainer свойство, которое верно для каталогов, но не для файлов.
посмотрите на 47folders приложение, бесплатный, удобный инструмент для Windows, делает именно то, что вам нужно через хороший графический интерфейс.
предупреждение: бывший ссылке (http://47foldersapp.com/) сейчас (ноябрь 2017) приводит к рекламу одежды. Последняя хорошая интернет-копия архива -здесь. Программное обеспечение все еще может быть доступно с бесплатных сайтов загрузки такие как этот.
там, вероятно, лучшее решение, но я хотел бы видеть эти:
копировать все, а затем очистить папки со сценарием.
сделать скрипт, который будет копировать все, если у него нет расширения. Если у вас нет файлов без расширения в папках, которые вы не должны, это должно работать, потому что, ну. Папки не имеют расширения. Что-то, что будет выглядеть так псевдокод:
open_directory ($path);
в то время как($файл=get_directory_content) <
если(пусто(get_file_extension (файл$))) <
copy_the_file ($file,$destination);
>
>
close_directory;
насколько я знаю, есть стороннее программное обеспечение, которое может обеспечить эту функциональность, Если вы хотите сделать с командной строкой, то команда копирования там. тип помогите скопировать в cmd, который предоставляет подробную информацию о том, как вы копируете файлы через cmd.
после копирования зайти в папку через cmd и выполнить команду
Copy-Item копирование файлов и папок из PowerShell
13.05.2020
insci
PowerShell
комментариев 9
PowerShell командлет Copy-Item используется для копирования файлов между локальными, сетевыми каталогами или между компьютерами по сети через WinRM. Командлет Copy-Item предоставляет большое количество опций, которые можно использовать в разных сценариях копирования файлов и каталогов (по своим возможностям этот командлет почти не уступает утилите robocopy). Например:
- перезапись файлов (override)
- фильтрация по имени/шаблону
- исключение по имени/шаблону
- Verbose режим
- Копирование файлов с/на удаленные компьютеры
Начнем с простых примеров использования Copy-Item и будем переходить к более сложным.
Копирование файлов и каталогов
Чтобы скопировать один файл 1.txt из каталога C:\SourceFolder\ в F:\DestFolder\, выполните:
Copy-Item -Path «C:\SourceFolder\1.txt» -Destination «F:\DestFolder\1.txt»
Можно использовать сокращенный синтаксис командлета, пропустив указание параметров Path и Destination:
cpi «C:\SourceFolder\1.txt» «F:\DestFolder\1.txt»
Теперь скопируем каталог C:\SourceFolder\folder в F:\DestFolder\folder. В папке folder находится файл 1.txt. Обратите внимание что без ключа –Recurse, папка folder копируется без содержимого:
Copy-Item -Path «C:\SourceFolder\folder» -Destination «F:\DestFolder\folder» -Recurse
С помощью Copy-Item также можно просто объединить файлы из несколько директорий в одну (слияние директории), для этого нужно перечислить директории в ключе –Path:
Copy-Item -Path «C:\SourceFolder\*», «C:\SourceFolder2\*», «C:\SourceFolder3\*» -Destination «F:\DestFolder\»
Копирование с заменой и копирование с заменой read-only файлов
Copy-Item по умолчанию при копировании заменяет файлы в целевом каталоге. Никаких дополнительных параметров указывать не нужно. При копировании каталога, если нужно заменить каталог в целевой папке, нужно использовать ключ –Force, иначе будет ошибка “Элемент folder с указанным именем уже существует — DirectoryExists”.

Для перезаписи файла с атрибутом read-only, нужно использовать ключ -Force. Если его не использовать, вы получите ошибку “отказано в доступе по пути… CopyFileInfoItemUnauthorizedAccessError”.

Чтобы скопировать файл с перезаписью файла с read-only атрибутом используйте параметр Force.
Copy-Item -Path «C:\SourceFolder\1.txt» -Destination «F:\DestFolder\1.txt» -Force
Чтобы Copy-Item скопировал файлы из одной папки в другую без замены существующих файлов, можно использовать этот простой скрипт
Copy-Item (Join-Path «C:\SourceFolder\» «*») «F:\DestFolder\» -Exclude (Get-ChildItem «F:\DestFolder\») -Recurse
Этот скрипт скопирует все файлы и папки из C:\SourceFolder в F:\DestFolder без замены файлов уже существующих в F:\DestFolder
Копирование с фильтрацией по шаблону
С помощью Copy-Item можно скопировать файлы/директории выбранные с помощью wildcard символа * или с помощью символа ?. Также поддерживаются некоторые регулярные выражения
- * — обозначает любое количество любых символов
- ? – обозначает 1 любой символ
- [a-z], [0-9] – символы между a-z и цифры между 0 и 9
Для примера возьмём такую структуру файлов:

Выполним копирование командой:
Copy-Item -Path «C:\SourceFolder\fol*» -Destination «F:\DestFolder\»
Результат в F:\DestFolder\

Теперь чистим папку назначения и выполняем:
Copy-Item -Path «C:\SourceFolder\folder[0-3]» -Destination «F:\DestFolder\»

Папка без цифры в окончании не скопировалась, потому что folder[0-3] подразумевает что после folder будет как минимум еще 1 символ между 0 и 3
Исключение файлов при копировании
С помощью ключа –Exclude можно исключить файлы при копировании. Например, следующай команда скопирует все файлы кроме файлов с расширением txt.
Copy-Item -Path «C:\SourceFolder\*» -Destination «F:\DestFolder\» -Recurse -Force -Exclude «*.txt»
Аналогичным же образом можно применить ключ –Include, например
Copy-Item -Path «C:\SourceFolder\*» -Destination «F:\DestFolder\» -Recurse -Force -Include «*.txt»
Скопирует только txt файлы. Хотя для простоты гораздо удобнее использовать при копировании вид -Path «C:\SourceFolder\*.txt» .
Копирование файлов на удаленный компьютер по сети
Copy-File может копировать не только по SMB протоколу, но и через WinRM (WSMan).
Создайте новую сессию с компьютером testnode1 и выполните копирование в её контексте:
$session = New-PSSession -ComputerName testnode1
Copy-Item -Path «C:\SourceFolder\*» -ToSession $session -Destination «C:\SourceFolder\» -Recurse -Force
Эта команда скопирует файлы с локального компьютера из директории C:\SourceFolder на компьютер testnode1 в C:\SourceFolder\.
Test-WSMan -ComputerName testnode1

Если WSMan не настроен, вы можете выполнить его быструю конфигурацию. Для этого откройте командную строку с правами администратора и выполните winrm quickconfig

Также можно копировать и через обычные сетевые SMB шары, для этого просто используйте UNC формат сетевого пути.
Copy-Item -Path «C:\SourceFolder\*» -Destination «\\testnode1\C$\copy_tutorial\»
Можно скопировать файл с удаленного компьютера. Принцип такой же, как и при копировании файлов на удаленный компьютер, за исключением параметра –ToSession, вместо него нужно использовать –FromSession:
$session = New-PSSession -ComputerName testnode1
Copy-Item -FromSession $session -Path «C:\SourceFolder\*» -Destination «F:\DestFolder\» -Recurse -Force
Эта команда скопирует содержимое папки C:\SourceFolder\ с компьютера testnode1 на локальный компьютер в директорию F:\DestFolder
Ключ PassThru
Командлет Copy-Item (как и многие другие командлеты PowerShell) не возвращает результатов в консоль. Параметр PassThru применяется скриптах, или для лог-файлов, когда нужно получить список скопированных файлов и работать с ним дальше. Рассмотрим пример
$items = Copy-Item -Path «C:\SourceFolder\*» –Destination «\\testnode1\C$\copy_tutorial\» -PassThru
Переменная $items будет содержать список скопированных файлов, с которым вы можете работать дальше.Это значит что вы можете напрямую работать с этими файлами. Например выполнив команду Remove-Item $items[0] , вы удалите директорию folder.

Ключ Verbose
При использовании ключа -Verbose вы получите подробный лог операций копирования. Например, вывод команды
Copy-Item -Path «C:\SourceFolder\*.txt» -Destination «F:\DestFolder\» -Recurse -Force -Verbose

Несколько полезных скриптов с Copy-Item
Скопировать только файлы:
Get-ChildItem «C:\SourceFolder» -File -Recurse | Copy-Item -Destination «F:\DestFolder»
Скопировать структуру папок, без файлов:
$path = Get-ChildItem «C:\SourceFolder» -Recurse | ?<$_.PsIsContainer -eq $true>
$dest = «F:\DestFolder\»
$parent = $path[0].Parent.Name
$path | foreach <
$_.FullName -match «$parent.+»
New-Item -ItemType directory ($dest + $Matches[0])
>
Copy-Item очень простой и удобный в использовании командлет PowerShell для выполнения операций копирования и перемещения файлов. В сочетании с другими инструментами PowerShell, Copy-Item также является мощным инструментом для написания скриптов.
Предыдущая статья Следующая статья
Как скопировать структуру папок без копирования файлов на ПК с Windows, Mac или Linux

Если вы нашли эффективный способ организации данных по папкам и подпапкам, вероятно, вы захотите воспроизвести эту структуру. Однако типичные способы копирования папок также включают дублирование файлов, поэтому вам придется тратить время на очистку папок. К счастью, есть несколько способов обойти эту проблему на компьютерах с Windows 11 и 10, macOS и Linux. Продолжайте читать, чтобы узнать, как дублировать структуру папок без исходных файлов.
Копировать структуру папок без копирования файлов в Windows 11
Проводник Windows не предлагает встроенной возможности автоматической репликации сложных структур папок. Прохождение иерархий папок и их репликация утомительны и требуют времени и усилий. К счастью для пользователей Windows 11, есть еще два способа копирования структуры папок без передачи файлов.
Первый способ предполагает использование командной строки. «Xcopy» — это сокращение от «расширенная копия», и эта команда позволяет вам переносить структуры папок в новое место хранения без дублирования файлов. В командной строке для этого используется ключ «/t». Проблема в том, что дублирующий переключатель не может обнаружить пустые папки, поэтому необходимо изменить его и добавить переключатель «/e». Их сочетание помогает командной строке идентифицировать пустые папки и копировать их организационную модель. Вот как использовать «xcopy» в командной строке:
Вы также можете использовать командную строку с командой Robocopy для копирования каталогов папок, иерархий и структур. Microsoft намеревалась использовать Robocopy как более функциональную версию «xcopy», предоставляя пользователям больше возможностей для управления файлами и папками и их организации. Вы можете избавить себя от копирования сложных каталогов файлов, введя относительно короткую командную строку. Для этого:
Переключатель «/e» позволяет системе копировать подиерархии, встроенные в структуру папок.
Переключатель «/xf *» настраивает командную строку, не позволяя системе копировать любые файлы, хранящиеся в папках.
Второй вариант для пользователей Windows 11 — копирование структуры папок с помощью стороннего программного обеспечения. Это отличный выбор, если вам неудобно работать с командными строками или вы не уверены в своих технических знаниях. Одной из самых удобных программ является Duplicate Directory. Разработчики хотят, чтобы вы сами определяли, насколько полезен инструмент, поэтому фиксированной цены нет. Клиенты могут пожертвовать любую сумму, которую они хотят, чтобы загрузить программное обеспечение. Чтобы реплицировать структуры с Duplicate Directory:
Программа реплицирует все исходные папки в новом месте, не перемещая и не копируя файлы.
Копировать структуру папок без копирования файлов в Windows 10
Проводник Windows полезен для ручного создания папок для ваших файлов, но в нем нет функции, позволяющей пользователям Windows 10 создавать копии структур папок и каталогов. Если вы работаете над сложными личными или профессиональными проектами, ваши папки, вероятно, содержат вложенные папки. Воссоздание этой структуры требует много терпения и энергии. К счастью, вы можете легко воссоздать структуру папок с помощью командной строки.
Командные строки действуют как псевдокод и обычно используются с командной строкой для выполнения различных задач. Команда «xcopy» реплицирует папки, и вы можете изменить ее с помощью переключателей, которые определяют, какие аспекты будут скопированы или исключены. Переключатель «/t» сигнализирует системе, что она должна реплицировать все папки без файлов. Поскольку эта функция не регистрирует пустые папки, в командной строке также будет указан переключатель «/e». Система будет сканировать структуры, содержащие пустые папки, и реплицировать их целиком. Чтобы выполнить команду:
Другой вариант — команда Robocopy. Вот как можно скопировать структуру папок с помощью строки Robocopy:
Действие реплицирует структуру, сохраняя все вложенные папки и исключая исходные файлы.
Скопируйте структуру папок без копирования файлов на Mac
Если у вас MacBook, вы можете скопировать структуру папок с помощью командной строки или стороннего программного обеспечения.
MacOS выполняет команды с помощью Mac Terminal. Чтобы скопировать структуру папок с помощью программы:
Это действие клонирует структуру папок в новом месте без сохранения исходных файлов.
Вы также можете копировать структуры и иерархии с помощью программного обеспечения Duplicate Directory. Приложение не требует написания командных строк и работает на пожертвования. Пользователи могут решить, сколько стоит программа, и загрузить ее после внесения пожертвования. Вот как использовать программное обеспечение:
Программа будет реплицировать папки и подпапки, но не сохранит файлы, что позволит вам хранить и упорядочивать новые данные.
Копировать структуру папок без копирования файлов в Linux
Системы Linux позволяют пользователям выполнять множество команд, но иногда сложно запомнить все командные строки. Самый быстрый способ скопировать структуру папок в Linux — использовать команду «rsync», инструмент для репликации файлов и каталогов. Поскольку утилиты «rsync» предустановлены в продуктах Linux, клонирование иерархий папок без файлов относительно просто. Для этого:
Модифицированная командная строка указывает системе реплицировать папки и подпапки, но пропускать файлы.
Эффективно копируйте структуры папок
Наши ноутбуки и ПК помогают нам отслеживать личную и профессиональную информацию и документы, поэтому очень важно, чтобы данные были хорошо организованы. Чтобы убедиться, что ваши данные в порядке, вы можете реплицировать пустые структуры папок на своем устройстве с помощью командной строки или сторонних программ.
Вы когда-нибудь копировали иерархию папок или каталог? Вы использовали один из методов, описанных в этой статье? Дайте нам знать в комментариях ниже.
Используйте Xcopy для копирования структуры папок в Windows
Правильная работа с нашими папками и файлами на Windows При работе с нашими данными ПК играет важную роль. Мы также работаем с огромным количеством папок и подпапок, поэтому мы должны правильно использовать их структуру, в чем мы вам поможем ниже.
Как правило, когда нам нужно управлять папками и соответствующими файлами в Windows, мы используем папку, известную как Проводник . Как вы уже знаете, например, для доступа к этому разделу мы можем сделать это с помощью комбинации клавиш Win + E. Это элемент, который предлагает нам все необходимое для работы с содержимым нашего диска. Таким образом, у нас есть возможность удалять, копировать или перемещать все виды файлы и папки .
Это способ управления содержимым наших дисковых накопителей из графического интерфейса Windows. Проводник значительно упрощает нам эти задачи, даже если мы не слишком опытные пользователи в этих темах. Но, с другой стороны, есть те, кто хочет добиться от этого вида работы гораздо большей производительности или, по крайней мере, иметь больший контроль над процессами. Что ж, нет ничего лучше, чем окунуться в CMD или окно командной строки в этом случае.
Откройте CMD, чтобы скопировать структуру данных
Здесь мы можем использовать ряд команд, которые, помимо прочего, также позволят нам управлять содержимым наших дисков. На этом этапе мы скажем вам, что при копировании и вставке папок все файлы и подпапки, которые они содержат, копируются вместе с ними, как вы, возможно, уже знаете. Таким образом, все файлы остаются в соответствующих подпапках, как и должно быть, чтобы ничего не потерять при копировании или перемещении содержимого.
Но в то же время может оказаться, что нам нужна только структура папок. То есть мы можем обнаружить, что нам не нужно копировать содержащиеся файлы, а нам нужно только реплицировать структуру папок. Это то, что мы можем сделать вручную, но поскольку количество папок и подпапок очень велико, задача может несколько раздражать. Таким образом, чтобы не создавать их вручную один за другим, мы можем использовать команду под названием Xcopy .
Мы используем это из упомянутого CMD или окно командной строки . Чтобы открыть это, нам просто нужно ввести CMD в поле поиска Windows. В появившейся записи мы щелкаем правой кнопкой мыши, чтобы выполнить это с правами администратора.

Какую команду Xcopy мы выполняем в CMD
Мы уже комментировали вам ранее, что в случае, если нам нужно скопировать только определенную структуру папок, мы будем использовать команду Xcopy. Прежде всего мы скажем вам, что Xcopy — это утилита, которая по умолчанию доступна в Windows 10 system, поэтому нам не нужно ничего дополнительно устанавливать на компьютер. Таким образом, у нас есть возможность сразу же использовать этот метод для копирования и вставки структуры папок, когда она нам понадобится.
Здесь стоит упомянуть, что со всем этим мы можем реплицировать структуру в любом месте на диске. Приведем пример: если основная папка находится на рабочем столе Windows, мы можем скопировать ее и все ее подкаталоги на внешний диск. Мы можем сделать то же самое с другой папкой или с внутренним диском, отличным от C. Это то, что мы сделаем с упомянутым команду Команда Xcopy, давайте посмотрим, как это сделать.
Скопируйте структуру папок в Windows
При всем том, что мы вам говорим, первое, что мы сделаем, это переместим папку, структуру которой мы хотим реплицировать, в новую папку, в которой ничего нет. Затем мы открываем окно командной строки, как мы показали вам ранее. Хотя на первых порах для тех задач, которые нас волнуют сейчас, права администратора нам не нужны, это тоже не помешает.
Таким образом, чтобы скопировать структура папок как мы уже упоминали, не включая содержащиеся в нем файлы, давайте посмотрим, как использовать команду Xcopy. На этом этапе мы скажем вам, что синтаксис, который мы собираемся здесь использовать, следующий:
Xcopy «Ruta a la carpeta origen» «Ruta a la carpeta de destino» /T /E
Чтобы дать нам более четкое представление о том, что нам нужно будет печатать, давайте посмотрим на наглядный пример использования Xcopy:
XCOPY C:/Users/Default/Carpeta de pruebas D:/Pruebas /T /E
Здесь мы должны знать, что первый путь к диску — это место, где мы разместили папку, из которой мы хотим скопировать структуру. Второй путь — это путь, на который мы хотим его скопировать, например, в корень диска D.
Параметры команды xcopy
Когда мы узнаем, как использовать команду Xcopy для копирования только структуры определенной папки, давайте посмотрим, как мы это делаем. Утверждение, что параметр / T фактически указывает Xcopy копировать только структуру папок, а не файлы, которые она содержит.
С другой стороны, / E сообщает Xcopy, что нужно также включить подпапки которые пусты, чтобы использовать всю структуру, и это то, что нас здесь интересует. Конечно, у нас есть возможность выполнить команду без / E. В этом случае скопированная структура папок будет включать только те папки, внутри которых есть файлы.

Также стоит упомянуть, что в то же время Xcopy — очень мощная функция системы, которая имеет множество параметров для использования. И дело в том, что это не только поможет нам копировать папки, но и пойдет гораздо дальше. Что делает его немного неудобным в использовании, так это то, что это инструмент командной строки и нет графический пользовательский интерфейс для него.
Точно так же, если вы не слишком привыкли к использованию командной строки, рекомендуется тестXNUMX заранее с неважными папками. Таким образом мы гарантируем, что будем правильно использовать команду Xcopy, когда она нам действительно нужна.