Перейти к содержимому

Как скопировать папки без содержимого

  • автор:

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

К примеру имеется папка, в ней есть под папки, и в каждой из подпапок есть еще папки, а в них лежат файлы.
Вот как мне скопировать все кроме файлов? Т.е мне нужны толкьо пустые папки и подпапки в той же структуре, что и были но без файлов.

Дополнен 13 лет назад
Всем спасибо я сам нашел, эта функция есть в Total Commander
Лучший ответ

xcopy d:\source\*.* d:\destination /t /e
где source — источник структуры папок, а destination — папка назначения, где будет создаваться пустая структура.
Подробнее — xcopy /?

Остальные ответы
написать прогу, которая будет это делать, по другому ни как
CeleronОракул (56743) 13 лет назад
Вы издиваетесь? А до меня никто до этог н едодумался? Например Total Commander?
CeleronОракул (56743) 13 лет назад
Всем спасибо я сам нашел, эта функция есть в Total Commander
Скопировать все целиком, а файлы потом стереть.
CeleronОракул (56743) 13 лет назад

А у меня там инвы на 15 Гб. И места свободного столько нет. и времени на такое копирование кучи мелких файлов. Это минут 30 займет.

CeleronОракул (56743) 13 лет назад
Всем спасибо я сам нашел, эта функция есть в Total Commander
Есть такая прога — Indexator — называетя, бесплатная поиши.
Создает хтмл-ку с деревом.
как функция называется в тотале?
Сергей ДмитриевЗнаток (259) 1 год назад

F5 + |*.*

Команда XCOPY — копирование файлов и каталогов.

Команда XCOPY используется для копирования файлов и каталогов с сохранением их структуры. По сравнению с командой COPY имеет более широкие возможности и является наиболее гибким средством копирования в командной строке Windows

Формат командной строки:

XCOPY источник [целевой_объект] [/A | /M] [/D[:дата]] [/P] [/S [/E]] [/V] [/W] [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U] [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z] [/B] [/EXCLUDE:файл1[+файл2][+файл3]. ]

Параметры командной строки:

источник — Копируемые файлы.

целевой_объект — Расположение или имена новых файлов.

/A — Копирование только файлов с установленным архивным атрибутом; сам атрибут при этом не изменяется.

/M — Копирование только файлов с установленным архивным атрибутом; после копирования атрибут снимается.

/D:m-d-y — Копирование файлов, измененных не ранее указанной даты. Если дата не указана, заменяются только конечные файлы, более старые, чем исходные.

/EXCLUDE:файл1[+файл2][+файл3]. — Список файлов, содержащих строки с критериями для исключения файлов и папок из процесса копирования. Каждая строка должна располагаться в отдельной строке файла. Если какая-либо из строк совпадает с любой частью абсолютного пути к копируемому файлу, такой файл исключается из операции копирования. Например, указав строку \obj\ или .obj, можно исключить все файлы из папки obj или все файлы с расширением OBJ соответственно.

/P — Вывод запросов перед созданием каждого нового файла.

/S — Копирование только непустых каталогов с подкаталогами.

/E — Копирование каталогов с подкаталогами, включая пустые. Эквивалентен сочетанию ключей /S /E. Совместим с ключом /T.

/V — Проверка размера каждого нового файла.

/W — Вывод запроса на нажатие клавиши перед копированием.

/C — Продолжение копирования вне зависимости от наличия ошибок.

/I — Если целевой объект не существует и копируется несколько файлов, считается, что целевой объект задает каталог.

/Q — Запрет вывода имен копируемых файлов.

/F — Вывод полных имен исходных и целевых файлов.

/L — Вывод имен копируемых файлов.

/G — Копирование зашифрованных файлов в целевой каталог, не поддерживающий шифрование.

/H — Копирование, среди прочих, скрытых и системных файлов.

/R — Перезапись файлов, предназначенных только для чтения.

/T — Создание структуры каталогов без копирования файлов. Пустые каталоги и подкаталоги не включаются в процесс копирования. Для создания пустых каталогов и подкаталогов используйте сочетание ключей /T /E.

/U — Копирование только файлов, уже имеющихся в целевом каталоге.

/K — Копирование атрибутов. При использовании команды XСOPY обычно сбрасываются атрибуты «Только для чтения».

/N — Использование коротких имен при копировании.

/O — Копирование сведений о владельце и данных ACL.

/X — Копирование параметров аудита файлов (подразумевает ключ /O).

/Y — Подавление запроса подтверждения на перезапись существующего целевого файла.

/-Y — Запрос подтверждения на перезапись существующего целевого файла.

/Z — Копирование сетевых файлов с возобновлением.

/B — Копирование символической ссылки вместо ее целевого объекта.

/J — Копирование с использованием небуферизованного ввода/вывода. Рекомендуется для очень больших файлов.

Ключ /Y можно установить через переменную среды COPYCMD.

Ключ /-Y командной строки переопределяет такую установку.

Примеры использования XCOPY

XCOPY /? — выдать краткую справку по использованию команды.

xcopy C:\users D:\copy1 — скопировать файлы из каталога C:\users в каталог D:\copy1 . Будет выполняться копирование без подкаталогов и только файлов без атрибутов «Скрытый» и «Системный». Для скопированных файлов будет установлен атрибут Архивный . Если каталог, в который выполняется копирование, не существует, то пользователю будет выдано сообщение:

Что означает D:\copy1:
имя файла или каталога
(F = файл, D = каталог)? D

После ответа D целевой каталог будет создан и копирование будет выполняться в D:\COPY1\. Для подавления запроса на создание целевого каталога используется параметр /I:

xcopy C:\users D:\copy1 /I

xcopy C:\users D:\copy1 /H /Y /C — копирование файлов, включая скрытые и системные, с подавлением запроса на перезапись существующих и возобновлением при ошибке. Если существующий в целевом каталоге файл имеет атрибут «Только чтение», то копирование не выполняется. Для перезаписи таких файлов используется ключ /R

xcopy C:\users D:\copy1 /H /Y /C /R /S — скопировать все файлы и подкаталоги ( /S ) с перезаписью существующих без запроса ( /Y ) , включая скрытые и системные. ( /H ) с перезаписью файлов с атрибутом «Только чтение» (/R) и игнорированием ошибок ( /C )

xcopy C:\users D:\copy1 /H /Y /C /R /S /EXCLUDE:C:\users\listnotcopy.txt — то же, что и в предыдущем случае, но текстовый файл C:\users\listnotcopy.txt задает признаки исключения из процедуры копирования. Пример содержимого файла:

\User1\ — исключить из копирования каталог C:\users\user1
All Users исключить из копирования каталог C:\users\All Users
de*.* — исключить из копирования все файлы и каталоги, начинающиеся на буквосочетание «de»

xcopy C:\users\*.exe D:\copy1 /H /Y /C /R /S /EXCLUDE:C:\users\listnotcopy.txt — то же, что и в предыдущем примере, но выполняется только копирование исполняемых файлов с расширением .exe .

xcopy %TEMP%\*.ini D:\copy1\ini /H /Y /C /R /S /I — копирование всех файлов с расширением .ini из каталога временных файлов в каталог D:\copy1\ini\ . Если целевой подкаталог \ini\ не существует, то он будет создан без запроса пользователю ( /I ) .

xcopy %TEMP%\*.ini D:\copy1\ini /H /Y /C /R /S /I /D:09-16-2013 — то же, что и в предыдущем примере, но выполняется копирование только тех файлов, у которых установлена дата изменения 16 сентября 2013 года и старше.

xcopy C:\ D:\copy1\LISTDIR /H /Y /C /R /S /I /E /T — создать структуру папок диска C: в каталоге D:\copy1\LISTDIR . Копирование файлов не выполняется. Копируются только папки, включая пустые, скрытые и системные.

xcopy C:\ D:\copy1\LISTDIR /H /Y /C /R /S /I /E /T /D:09-16-2013 воссоздать в каталоге D:\copy1\LISTDIR структуру папок диска C: , с датой изменения 16 сентября 2013 года и позже.

Для добавления новых файлов в каталоги и обновления существующих на более поздние версии, можно использовать команду REPLACE.

Копирование и перемещение файлов и папок

Файл или папку можно скопировать или переместить в другое место, перетаскивая их мышью, используя команды копирования и вставки, или с помощью комбинаций клавиш.

For example, you might want to copy a presentation onto a memory stick so you can take it to work with you. Or, you could make a back-up copy of a document before you make changes to it (and then use the old copy if you don’t like your changes).

Эти инструкции применимы как к файлам, так и к папкам. Копирование и перемещение файлов и папок выполняется одинаково.

Копирование и вставка файлов

  1. Выберите файл, который хотите скопировать, нажав на него.
  2. Нажмите правой кнопкой и выберите Копировать или нажмите Ctrl + C .
  3. Перейдите в папку, в которую нужно поместить копию файла.
  4. Click the menu button and pick Paste to finish copying the file, or press Ctrl + V . There will now be a copy of the file in the original folder and the other folder.

Перемещение файлов командами вырезания и вставки

  1. Выберите файл, который хотите переместить, нажав на него.
  2. Нажмите правой кнопкой и выберите Вырезать или нажмите Ctrl + X .
  3. Перейдите в ту папку, в которую нужно переместить файл.
  4. Click the menu button in the toolbar and pick Paste to finish moving the file, or press Ctrl + V . The file will be taken out of its original folder and moved to the other folder.

Копирование или перемещение файлов перетаскиванием

  1. Откройте менеджер файлов и перейдите в папку, содержащую файл, который нужно скопировать.
  2. Нажмите Nautilus в верхней панели и выберите Создать окно (или нажмите Ctrl + N ), чтобы открыть новое окно. В новом окне перейдите в папку, в которую нужно переместить или скопировать файл.
  3. Нажмите на файл и перетащите его из одного окна в другое. Файл будет перемещён , если целевая папка находится на том же устройстве, и скопирован , если целевая папка находится на другом устройстве. For example, if you drag a file from a USB memory stick to your Home folder, it will be copied, because you’re dragging from one device to another. Для принудительного копирования файла удерживайте при его перетаскивании нажатой клавишу Ctrl , а для принудительного перемещения — клавишу Shift .

You cannot copy or move a file into a folder that is read-only . Some folders are read-only to prevent you from making changes to their contents. You can change things from being read-only by changing file permissions .

Как, чем создать копию папок, но пустых? (1 онлайн

Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать другой.

CakeWorker
Друг киргиза-пришелец

10 Ноя 2002 10.038 5.303 113 Севера

Допустим, есть у меня пачка папок, где лежат FLAС’и и «конверчённые» из них MP3. До того как грохнуть ФЛАКи, нужно переместить МП3 для прослушать и измерить их общую ёмкость. Как сделать так, чтобы не создавать копию каждой папки по отдельности, а сделать в один раз всей пачкой?
Есть TotalCommander.

Tuvalu
Well-Known Member

18 Ноя 2011 639 400 63 www

Можете точнее описать задачу? А то в шапке написано «пустые папки», а в посте — наполненные флаками и мп3. Кстати, они расположены скопом или каждый формат в своей папке. А вообще-то, в Total C подобное делается «на раз».
Если я правильно понял вопрос, то можно сделать так: в Total C открыть директорию со всеми папками. Далее по Ctrl+B (замечательная команда!) формируете список всех файлов скопом. Сортируете файлы по типу, убиваете ненужные (флаки, надо полагать). Видимо, вначале нужно будет скопировать все папки в отдельное место (чтобы их названия были без «копия») и удаляете ненужное. Короче, сообразите сами, тут всё очевидно.

Последнее редактирование: 27 Сен 2019

CakeWorker
Друг киргиза-пришелец

10 Ноя 2002 10.038 5.303 113 Севера
в шапке написано «пустые папки», а в посте — наполненные флаками и мп3.

Ну да. Создать надо где-то в другом месте (не важно) ровно такую же структуру папок с такими же названиями, но пустые. либо с переносом туда только МП3 и не затрагивая ФЛАКи.

Короче, сообразите сами, тут всё очевидно.
Было б очевидно, я бы не заморачивался. Нет?

AlexLazer
Well-Known Member

26 Янв 2009 2.645 1.369 113 39 Russia, Stavropol soundprofi.ru
@CakeWorker, Я так думаю скопировать полные папки, потом поиском найти все флаки и грохнуть их.
Последнее редактирование: 28 Сен 2019

Gerain9
Well-Known Member

16 Окт 2006 2.820 1.996 113 Татарстан

@CakeWorker, если есть Total Commander то всё очень просто
Нажимаете копировать (F5), в появившемся окне во втором пустом поле написать |*.*
Мне лениво это писать, поэтому три символа я копирую из верхней стороки и только добавляю |
А вообще в Тотале неимоверно много функций и возможностей

Ваш браузер не может отобразить это видео.
Последнее редактирование: 28 Сен 2019

CakeWorker
Друг киргиза-пришелец

10 Ноя 2002 10.038 5.303 113 Севера
Я так думаю, скопировать полные папки, потом поиском найти все флаки и грохнуть их.

Во-первых, это слишком просто, банально и. тупо. Во-вторых, долго. В-третьих, будь это HDD — бог бы с ним, но лишние перезаписи на SSD мне нафик не нужны.

CakeWorker
Друг киргиза-пришелец

10 Ноя 2002 10.038 5.303 113 Севера
@Gerain9, ну вот — то, что нужно, супер.
Кстати.
Мне лениво это писать, поэтому три символа я копирую из верхней стороки и только добавляю |

Их (*.*) и копировать не надо — это набор есть в списке второй графки — достаточно ткнуться мышкой в стрелку справа.

Последнее редактирование: 28 Сен 2019

Gerain9
Well-Known Member

16 Окт 2006 2.820 1.996 113 Татарстан

@CakeWorker, как мало надо для счастья)))
А вообще изучить бы все возможности TC. давно мечтаю, всё времени не хватает. Но и так получается людей реально удивлять. Иногда

Gerain9
Well-Known Member

16 Окт 2006 2.820 1.996 113 Татарстан

@CakeWorker, погуглил- оказывается там вообще можно любую ересь написать, лишь бы не было похоже на реальный тип какого файла.
cvc написал, тоже так же срабатывает. Ну понятно почему.
Если написать например *mp3* то скопирует только мп3- без картинок, обложек и т.д. Иногда тоже так нужно.

Tuvalu
Well-Known Member

18 Ноя 2011 639 400 63 www

Ну да. Создать надо где-то в другом месте (не важно) ровно такую же структуру папок с такими же названиями, но пустые. либо с переносом туда только МП3 и не затрагивая ФЛАКи.

Короче, сообразите сами, тут всё очевидно.
Было б очевидно, я бы не заморачивался. Нет?

Т.к. вы сразу не написали, что лишние копирования нежелательны (SSD), то овтет для вас неактуален. Но я , всё же, объясню — для завершения мысли, так сказать.
1) Создаётся новый каталог . /New, в него копируются все папки со всеми файлами.
2) В новом каталоге /New выполняете команду Ctrl+B (Тотал командер), полученный список ВСЕХ файлов сортируете по расширению (нажать на Ext).
3) Скопом убиваете ненужные файлы с расширением.flac-и или любым иным.
4) Всё, финита — во всех папках из директории /New остались только нужные файлы. Структура всх папок осталась прежней.

Long
Well-Known Member

27 Фев 2008 16.366 13.949 113 Moscow WWW.LONG.RU

— Если нужно сохранить ВСЁ исходное, а сделать копию с нужными файлами (по расширению) —
то всё делается ващще в виндовом проводнике: по нужным папкам делаете поиск FLAC,
и в этом же окошке поиска — их удаляете в корзину.
После чего копируете оставшееся в другое место.
Потом всё возвращаете из корзины.

Вряд ли есть более простой способ.

Tuvalu
Well-Known Member

18 Ноя 2011 639 400 63 www
Long, финт с корзиной — очень остроумно, плюсую!

digilab2
Well-Known Member

19 Июн 2012 12.343 6.443 113 67 Москва www.skbprost.ru

-я не очень вьехал в проблему , создаете в тс (f7) новую папку с нужным названием , туда переносите (f6) все ваши мп3 или флаки(
отмечаются insert) вот и все

CakeWorker
Друг киргиза-пришелец

10 Ноя 2002 10.038 5.303 113 Севера
@digilab2, да не папка. написал же «пачка папок», «структура папок»!

всё же, объясню — для завершения мысли, так сказать.
1) Создаётся новый каталог . /New, в него копируются все папки со всеми файлами.
2) В новом каталоге /New выполняете команду Ctrl+B (Тотал командер), полученный список ВСЕХ файлов сортируете по расширению (нажать на Ext).
3) Скопом убиваете ненужные файлы с расширением.flac-и или любым иным.
4) Всё, финита — во всех папках из директории /New остались только нужные файлы. Структура всх папок осталась прежней.

Это элементарно, коллега. Т.е. это то, что сделал бы любой мало-мальски с TotalCommander (и типа того) знакомый. И вы снова описали способ, о котором я сказал, что он нежелателен из-за перезаписи и копирования ненужного контента туда-сюда.

Тогда как @Gerain9 предложил реально изящный и простой способ. И проблема решена.

Как скопировать папки без содержимого

Сообщения: 53036
Благодарности: 15396

Конфигурация компьютера
Процессор: AMD Ryzen 7 7800X3D
Материнская плата: Gigabyte B650E Aorus Master
Память: Kingston Fury Renegade DDR5-6000 32GB (2×16)
HDD: Samsung SSD 850 PRO 256GB, 980 PRO 1TB
Видеокарта: Gainward GeForce RTX 3080 追风
Блок питания: be quiet! Straight Power 11 650W
Монитор: ASUS VG248QE 24″
ОС: Windows 10 Pro x64
Прочее: корпус Fractal Design Define R4

lexter-kn, почитайте в документации к SubInACL пример к опции /stringreplaceonoutput (там как раз описана ваша задача) и в этой теме некоторые замечания.

Сообщения: 5624
Благодарности: 936

XCOPY источник [целевой_объект] [/A | /M] [/D[:дата]] [/P] [/S [/E]] [/V] [/W]
[/C] [/i] [/q] [/F] [/L] [/G] [/H] [/R] [/T] [/u]
[/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z] [/b]
[/EXCLUDE:файл1[+файл2][+файл3]. ]

ключ /O позволяет перенести данные с сохранением прав доступа. Я таким образом уже 2 года делаю доп. бекап данных с файлового сервера.
Плюс можно настроить ключами, чтобы он делал только инкрементное копирование, т.е. копировал только те файлы, которые изменились или добавились после последнего копирования.

Это сообщение посчитали полезным следующие участники:

Сообщения: 3487
Благодарности: 507

Недавно стояла такая же задача.
Воспользовался Ideal Migration. Устанавливал только на доноре.
Саму операцию проводил с нового сервера, заходя на донор по RDP (но можно просто перенести созданный файл конфигурации).
На обоих требуется отключить (временно) DEP.
Я переносил только юзеров с паролями, но остальные данные тоже возможно.

——-
Просьба обращаться на «ты».

Сообщения: 5624
Благодарности: 936

xcopy \\server\d$\BUH G:\Backups\BUH\ /D /E /C /F /H /R /Y /O

Вот и все дела. Скопирует все файлы в первый раз с сохранением структуры, прав доступа и т.д. Т.е. полная зеркальная копия.

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

К примеру имеется папка, в ней есть под папки, и в каждой из подпапок есть еще папки, а в них лежат файлы.
Вот как мне скопировать все кроме файлов? Т.е мне нужны толкьо пустые папки и подпапки в той же структуре, что и были но без файлов.

Дополнен 13 лет назад
Всем спасибо я сам нашел, эта функция есть в Total Commander
Лучший ответ

xcopy d:\source\*.* d:\destination /t /e
где source — источник структуры папок, а destination — папка назначения, где будет создаваться пустая структура.
Подробнее — xcopy /?

Остальные ответы
написать прогу, которая будет это делать, по другому ни как
CeleronОракул (56743) 13 лет назад
Вы издиваетесь? А до меня никто до этог н едодумался? Например Total Commander?
CeleronОракул (56743) 13 лет назад
Всем спасибо я сам нашел, эта функция есть в Total Commander
Скопировать все целиком, а файлы потом стереть.
CeleronОракул (56743) 13 лет назад

А у меня там инвы на 15 Гб. И места свободного столько нет. и времени на такое копирование кучи мелких файлов. Это минут 30 займет.

CeleronОракул (56743) 13 лет назад
Всем спасибо я сам нашел, эта функция есть в Total Commander
Есть такая прога — Indexator — называетя, бесплатная поиши.
Создает хтмл-ку с деревом.
как функция называется в тотале?
Сергей ДмитриевЗнаток (259) 1 год назад

F5 + |*.*

Копирование и перемещение файлов и папок

Файл или папку можно скопировать или переместить в другое место, перетаскивая их мышью, используя команды копирования и вставки, или с помощью комбинаций клавиш.

For example, you might want to copy a presentation onto a memory stick so you can take it to work with you. Or, you could make a back-up copy of a document before you make changes to it (and then use the old copy if you don’t like your changes).

Эти инструкции применимы как к файлам, так и к папкам. Копирование и перемещение файлов и папок выполняется одинаково.

Копирование и вставка файлов

  1. Выберите файл, который хотите скопировать, нажав на него.
  2. Нажмите правой кнопкой и выберите Копировать или нажмите Ctrl + C .
  3. Перейдите в папку, в которую нужно поместить копию файла.
  4. Click the menu button and pick Paste to finish copying the file, or press Ctrl + V . There will now be a copy of the file in the original folder and the other folder.

Перемещение файлов командами вырезания и вставки

  1. Выберите файл, который хотите переместить, нажав на него.
  2. Нажмите правой кнопкой и выберите Вырезать или нажмите Ctrl + X .
  3. Перейдите в ту папку, в которую нужно переместить файл.
  4. Click the menu button in the toolbar and pick Paste to finish moving the file, or press Ctrl + V . The file will be taken out of its original folder and moved to the other folder.

Копирование или перемещение файлов перетаскиванием

  1. Откройте менеджер файлов и перейдите в папку, содержащую файл, который нужно скопировать.
  2. Нажмите Nautilus в верхней панели и выберите Создать окно (или нажмите Ctrl + N ), чтобы открыть новое окно. В новом окне перейдите в папку, в которую нужно переместить или скопировать файл.
  3. Нажмите на файл и перетащите его из одного окна в другое. Файл будет перемещён , если целевая папка находится на том же устройстве, и скопирован , если целевая папка находится на другом устройстве. For example, if you drag a file from a USB memory stick to your Home folder, it will be copied, because you’re dragging from one device to another. Для принудительного копирования файла удерживайте при его перетаскивании нажатой клавишу Ctrl , а для принудительного перемещения — клавишу Shift .

You cannot copy or move a file into a folder that is read-only . Some folders are read-only to prevent you from making changes to their contents. You can change things from being read-only by changing file permissions .

Копирование или перемещение сообщения или папки

Клиент может использовать один из четырех методов для копирования или перемещения сообщения или папки:

  • IMAPIFolder::CopyFolder
  • IMAPIFolder::CopyMessages
  • IMAPIProp::CopyTo
  • IMAPIProp::CopyProps

Установив соответствующие флаги и параметры, copyTo и CopyProps можно заставить работать так же, как CopyFolder или CopyMessages. При принятии решения о том, какой метод следует вызывать, учитывайте следующие проблемы:

  • Копируете или перемещаете папку или сообщение?
  • Сколько вы знаете о папке или сообщении для перемещения или копирования?
  • Сколько свойств папки или сообщения будет перемещено или скопировано?

Методы IMAPIProp можно использовать для копирования или перемещения папки или сообщения. IMAPIFolder::CopyMessages работает только с сообщениями; IMAPIFolder::CopyFolder работает только с папками.

В то время как использование методов IMAPIFolder не требует каких-либо знаний о свойствах, поддерживаемых папкой или сообщением для копирования или перемещения, необходимо иметь некоторые знания, чтобы использовать методы IMAPIProp . При использовании IMAPIProp::CopyProps необходимо явно указать, какие свойства папки или сообщения нужно скопировать или переместить. В IMAPIProp::CopyTo, если вы не хотите копировать или перемещать все свойства, необходимо явно указать, какие из них следует исключить. Дополнительные сведения об этих методах см. в разделе Копирование свойств MAPI.

Количество свойств для копирования или перемещения может повлиять на решение о том, какой метод следует использовать. При копировании или перемещении нескольких сообщений вызовите IMAPIFolder::CopyMessages. Другой вариант — вызвать IMAPIProp::CopyProps , чтобы скопировать только свойство PR_CONTAINER_CONTENTS папки (PidTagContainerContents). В следующей процедуре показано, как использовать CopyMessages.

Копирование или перемещение одного или нескольких сообщений

  1. Найдите допустимые идентификаторы записей для исходной и целевой папок.
  2. Откройте эти папки в режиме чтения и записи, вызвав IMAPISession::OpenEntry или IMsgStore::OpenEntry и задав флаг MAPI_MODIFY.
  3. Убедитесь, что указатель интерфейса, возвращаемый из OpenEntry , является указателем интерфейса IMAPIFolder . Если нет, приведите его к типу LPMAPIFOLDER.
  4. Создайте массив идентификаторов записи, представляющих одно или несколько сообщений для копирования или перемещения.
  5. Вызовите IMAPIFolder::CopyMessages со следующими флагами:
    • MESSAGE_MOVE, если вы хотите выполнить операцию перемещения.
    • MESSAGE_DIALOG и передайте дескриптор окна в параметре ulUIParam , если вы хотите, чтобы папка отображала индикатор хода выполнения.
  6. Отпустите указатели IMAPIFolder для исходной и целевой папок.

Если вы хотите скопировать полное содержимое папки в другую папку, вызовите метод IMAPIFolder::CopyFolder исходной папки или IMAPIProp::CopyTo .

Чтобы скопировать несколько свойств папки, вызовите ее метод IMAPIProp::CopyProps . Чтобы скопировать большую часть свойств папки, вызовите IMAPIProp::CopyTo.

Например, если вы хотите скопировать свойства PR_DISPLAY_NAME папки (PidTagDisplayName) и PR_COMMENT (PidTagComment), у вас есть следующие параметры:

  • Вызовите IMAPIFolder::CopyFolder , чтобы скопировать все свойства папки, а затем удалить ненужные свойства из новой папки.
  • Вызовите CopyTo и исключите все свойства папки, кроме PR_DISPLAY_NAME и PR_COMMENT.
  • Вызовите CopyProps, передав PR_DISPLAY_NAME и PR_COMMENT в массиве include.

В этом случае copyProps является лучшим выбором, так как он предназначен для копирования небольшого набора свойств и является самым простым вызовом для реализации.

Чтобы скопировать или переместить только свойства папки, не включая сообщения, вызовите метод IMAPIProp::CopyTo папки и исключите следующие свойства:

  • PR_CONTAINER_CONTENTS (PidTagContainerContents)
  • PR_FOLDER_ASSOCIATED_CONTENTS (PidTagFolderAssociatedContents)

Методы копирования могут возвращать S_OK, указывающие на общий успех, MAPI_W_PARTIAL_COMPLETION, частичный успех или ошибку. Если возвращается MAPI_W_PARTIAL_COMPLETION, используйте макрос HR_FAILED для доступа к более конкретной ошибке. Дополнительные сведения см. в разделе Использование макросов для обработки ошибок.

Если вы копируете сообщения из одного хранилища сообщений в другое и юникод не поддерживается обоими, имейте в виду, что информация может быть потеряна из-за преобразования кодовой страницы. Обычно невозможно узнать, поддерживают ли хранилища сообщений один или оба формата, поэтому невозможно определить, следует ли копировать свойства текста в виде строк ASCII или в виде строк Юникода. Если вы поддерживаете Юникод, попробуйте выполнить копирование Юникода. В случае сбоя со значением ошибки MAPI_E_BAD_CHARWIDTH, прибегите к ASCII.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *