VBA. Копирование со структурой папок

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

добавлю что ключ /I создаст папку Path_01 если её не существует.

ещё команда FOR была довольно занятна... а вообще наверное батник придётся стартовать
Изображение
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

Aent, xcopy хорош, но он сделает каталоги вложенные в заданный первым параметром.
/S для рекурсии забыли
Изображение
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

&quot писал(а):он сделает каталоги вложенные в заданный первым параметром.
/S для рекурсии забыли
??? Поясните, что Вы имеете в виду ?
/T /E - копируется всё дерево подпапок. Отнюдь не только первый уровень.
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

упс... про /S погорячился... это я перепробывался ключей :)
основной тон сообщения заключался в неприменимости xcopy для задачи топикстартера.
Изображение
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

&quot писал(а):основной тон сообщения заключался в неприменимости xcopy для задачи топикстартера.
Непонятно почему. Вложенные каталоги переносятся с любым разумным уровнем вложенности.
Или Avsha, я всё таки неправильно понял Вашу постановку задачи ?
Avsha
Сообщения: 665
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

to Aent,
xcopy копирует весь пучек вложенных папок
C:\Program\Path_01
C:\Program\Path_02
C:\Program\Path_03 и т.д.

А мне требуется скопировать только одну ветку с сохранением пути до корня, например
C:\Program\Path_02 на
K:\Program\Path_02

А этого xcopy сделать не сможет, она построит весь пучек \Path_01, \Path_02, \Path_03
:(

Ну да ладно, считаю вопрос закрытым
ручная команда
md K:\Program\Path_02
- мне уже достаточно помогла :)
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

Avsha, ну так ровно это я и предлагал

Код: Выделить всё

Sub CopyPath(sSourcePath as string)
    Dim rc As Long
    Dim sTargetPath as string
    sTargetPath = "k:\" & Mid$(sSourcePath,4)
    MkDir sTargetPath
    rc = Shell("c:\Windows\System32\xcopy.exe """ &  sSourcePath & """ """ &  sTargetPath & """ /T /E", 0)
End Sub
Впрочем, я всё время предполагаю, что исходные папки Path_xx cодержат подпапки...
Если это не так то конечно достаточно VBA команды MkDir. Вызов CMD (md) в этом
случае не нужен.
Впрочем, закроем тему :)
Avsha
Сообщения: 665
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

Вот, вот, вот -
xcopy не хочет свою работу выполнять, а MkDir за нее отдувается :)
Ответить