|
WinAPI : скопировать дерево, т.е. каталог со всеми его подкаталогами и файлами.
|
|||
---|---|---|---|
#18+
Привет! Вобщем есть необходимость копировать деревья, т.е. каталог со всем его содержимым (все подкаталоги и их файлы) по его имени в другой каталог. Есть в принципе простое решение в виде XCOPY, но интересно WinAPI решение. На сайте news2news.com я нашел пример для удаления каталога, решил переделать его под копирование: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128.
Параметрами должны придти валидные полные пути, (к примеру, полученные getdir()) и без слеша (\) в конце. На возврате 0 если все ОК и код выньапишного ашипко если че не так. Мож какие предложения будут по усовершенствованию? ЗЫ Эта тема задумывалась как вопрос, т.к. у меня не получалось. Но прочитал MSDN про SHFILEOPSTRUCT и допер что надо было добавить еще один chr(0) в строке lcString = lcString + Chr(0) + Chr(0), так как там изначально только 1 был. А я поначалу пытался дважды нул добавлять после адреса строк в сборке cBuffer, что к0зило ан иксепшн ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2009, 14:32 |
|
WinAPI : скопировать дерево, т.е. каталог со всеми его подкаталогами и файлами.
|
|||
---|---|---|---|
#18+
авторМож какие предложения будут по усовершенствованию? Ну вот это чуток покороче будет Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2009, 14:56 |
|
WinAPI : скопировать дерево, т.е. каталог со всеми его подкаталогами и файлами.
|
|||
---|---|---|---|
#18+
Да, согласен, видел - через vbs все решается в 2 строки. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2009, 15:29 |
|
WinAPI : скопировать дерево, т.е. каталог со всеми его подкаталогами и файлами.
|
|||
---|---|---|---|
#18+
Это на фоксе ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2009, 15:52 |
|
WinAPI : скопировать дерево, т.е. каталог со всеми его подкаталогами и файлами.
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2009, 15:59 |
|
WinAPI : скопировать дерево, т.е. каталог со всеми его подкаталогами и файлами.
|
|||
---|---|---|---|
#18+
to CTAC-KO - блин не увидел s в vbs , подумал что написано про VB. Если ты насчет того что через Scripting - то думаю тут разницы нет с "чистым" WinAPI . наверняка "внутре" - там нечто похожее на приведенный тобой код. Я особо этим не заморачиваюсь - есть удобный инструмент - я им пользуюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2009, 16:07 |
|
WinAPI : скопировать дерево, т.е. каталог со всеми его подкаталогами и файлами.
|
|||
---|---|---|---|
#18+
в моем примере, похоже, есть ошибка. Она моя отчасти, но есть. Короче смысл в том, что желательно во флагах не использовать FOF_SIMPLEPROGRESS, из-за того, что в примере на основе которого я это делал немного неправильно написана передача параметров... 2-=AlexiS=- У меня какая-то необъяснимая тяга к WinAPI... Поэтому два простых выхода через VBS и XCOPY я проигнорил, а про VBS даже не упомянул. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2009, 16:45 |
|
|
start [/forum/search_topic.php?author=Stepler.&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
get settings: |
10ms |
get forum list: |
15ms |
get settings: |
10ms |
get forum list: |
13ms |
get settings: |
10ms |
get forum list: |
15ms |
get settings: |
9ms |
get forum list: |
17ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 2452ms |
total: | 2715ms |
0 / 0 |