Копирование папки

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
13GHOST
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 305
Зарегистрирован: 09.01.2004 (Пт) 12:48

Копирование папки

Сообщение 13GHOST » 16.01.2006 (Пн) 14:25

Как скопировать папку (директорию) т.е. надо как то перебрать все файлы в текущей директории и во всех вложенных в нее
заранее спасибо

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 16.01.2006 (Пн) 14:34

рекурсия

13GHOST
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 305
Зарегистрирован: 09.01.2004 (Пт) 12:48

Сообщение 13GHOST » 16.01.2006 (Пн) 14:35

а пример есть?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 16.01.2006 (Пн) 14:36

Да, в поиске.
Lasciate ogni speranza, voi ch'entrate.

HotKitten
Дятил
Дятил
Аватара пользователя
 
Сообщения: 400
Зарегистрирован: 24.01.2005 (Пн) 21:48
Откуда: из дома

Сообщение HotKitten » 16.01.2006 (Пн) 14:36

перебор файлов в поиск, тема пару дней назад обсуждалась
Изображение

AndreyIl
Обычный пользователь
Обычный пользователь
 
Сообщения: 82
Зарегистрирован: 18.10.2005 (Вт) 16:17
Откуда: г. Брянск

Сообщение AndreyIl » 16.01.2006 (Пн) 15:12

>Как скопировать папку (директорию) т.е. надо как то перебрать все файлы в текущей директории и во всех вложенных в нее

Так надо просто скопировать папку с ее содержимым или перебрать это содержимое?

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 16.01.2006 (Пн) 15:30

HotKitten писал(а):перебор файлов в поиск, тема пару дней назад обсуждалась


Бяка.

Смотри Help по SHFileOperation.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 16.01.2006 (Пн) 16:21


13GHOST
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 305
Зарегистрирован: 09.01.2004 (Пт) 12:48

Сообщение 13GHOST » 16.01.2006 (Пн) 16:58

блин а можно это сделать как нибудь посредством например API copyfile? т.е. перебрать все файлы в директории и посредством этой функции скоировать их...

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 16.01.2006 (Пн) 17:01

13GHOST писал(а):блин а можно это сделать как нибудь посредством например API copyfile? т.е. перебрать все файлы в директории и посредством этой функции скоировать их...


Нм. Ну и нафига тебе тогда API?
Как проще и удобней с API тебе уже сказали.

Иначе - Dir и FileCopy хватит.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

13GHOST
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 305
Зарегистрирован: 09.01.2004 (Пт) 12:48

Сообщение 13GHOST » 16.01.2006 (Пн) 17:06

мне надо чтобы эта процедура состояла из копирования каждого фалика :)

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 16.01.2006 (Пн) 17:09

13GHOST писал(а):мне надо чтобы эта процедура состояла из копирования каждого фалика :)


Вопрос - зачем?
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

13GHOST
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 305
Зарегистрирован: 09.01.2004 (Пт) 12:48

Сообщение 13GHOST » 16.01.2006 (Пн) 17:17

потому что папка будет копироваться по сети, у меня уже написана процедура которая копирует отдельный фалик по сети, теперь надо сделать чтобы можно было копировать директории целиком...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 16.01.2006 (Пн) 17:21

А...
Написанная процедура копирования файла по сети - не функция filecopy случаем, нет?..
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

13GHOST
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 305
Зарегистрирован: 09.01.2004 (Пт) 12:48

Сообщение 13GHOST » 16.01.2006 (Пн) 17:22

блин ну я так просто написал про Filecopy :) нет это не filecopy, мне просто надо представить копирование папки как копирование каждого файла!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 16.01.2006 (Пн) 17:27

Зачем?
Препод сказал?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

13GHOST
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 305
Зарегистрирован: 09.01.2004 (Пт) 12:48

Сообщение 13GHOST » 16.01.2006 (Пн) 17:35

да блин ну просто так пишу прогу - обменник файлами по сети

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 16.01.2006 (Пн) 17:44

ну и пиши, а при чем тогда вообще весь сырбор :lol: :?:

13GHOST
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 305
Зарегистрирован: 09.01.2004 (Пт) 12:48

Сообщение 13GHOST » 16.01.2006 (Пн) 17:51

в том что я НЕ ЗНАЮ КАК КОПИРОВАТЬ ВСЮ ПАПКУ ЦЕЛИКОМ! т е перебрать в ней все файлы - вот в чем весь сырбор :))

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 16.01.2006 (Пн) 17:56

тебе как , посложнее или попроще :?:

если попроще, то через Dir(), посложнее , то через FindFirstFile() (см. ApiGuide)

uzer_@
Обычный пользователь
Обычный пользователь
 
Сообщения: 57
Зарегистрирован: 16.08.2005 (Вт) 16:44
Откуда: Санкт-Петербург

Сообщение uzer_@ » 16.01.2006 (Пн) 18:01

вы не это обсуждаете, стесняюсь спросиь? FileSystemObject.CopyFolder

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 16.01.2006 (Пн) 18:10

как один из вариантов от uzer_@

13GHOST
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 305
Зарегистрирован: 09.01.2004 (Пт) 12:48

Сообщение 13GHOST » 16.01.2006 (Пн) 18:31

FileSystemObject.CopyFolder этож просто одна функция и все, а вот FindFirstFile() вроде ничего :)

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 16.01.2006 (Пн) 18:38

Можно перебрать файлы FileList-ом. И просто создавать папку и копировать в неё файлы!
#define ROFL 0xDDDD

13GHOST
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 305
Зарегистрирован: 09.01.2004 (Пт) 12:48

Сообщение 13GHOST » 17.01.2006 (Вт) 7:19

а папки вложенные как перебрать?

AndreyIl
Обычный пользователь
Обычный пользователь
 
Сообщения: 82
Зарегистрирован: 18.10.2005 (Вт) 16:17
Откуда: г. Брянск

Сообщение AndreyIl » 17.01.2006 (Вт) 9:18

Папки перебирать через DirListBox или через FSO, WMI.

uzer_@
Обычный пользователь
Обычный пользователь
 
Сообщения: 57
Зарегистрирован: 16.08.2005 (Вт) 16:44
Откуда: Санкт-Петербург

Сообщение uzer_@ » 17.01.2006 (Вт) 10:00

видимо я чего-то не понимаю, тем не меннее метод CopyFolder выполняет копирование папок вместе с их содержимым.

CodeName33
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 297
Зарегистрирован: 01.09.2004 (Ср) 13:25
Откуда: SPb

Сообщение CodeName33 » 17.01.2006 (Вт) 10:14

Вот код, который возвращает массив файлов с полными путями внутри папки и её подпапок. Как скопировать, думаю, сам разберёшься.

Код: Выделить всё
Public Function GetSubFolderFiles(ByVal folder As String, FilesArray() As String) As Long
On Error Resume Next
Dim i As Long, ArrayF() As String, ArrayC As Long, S2 As String, cDir As Long, cSize As Long, S As String
ReDim ArrayF(1 To 1) As String
ArrayC = 1: cDir = 1
ArrayF(ArrayC) = DirFilterIN(folder) + "\"

GETFOLDERS:
folder = DirFilterIN(folder) + "\"
S = Dir(folder, vbDirectory Or vbArchive Or vbHidden Or vbNormal Or vbReadOnly Or vbSystem)
Do Until S = ""
  If Not StrComp(S, ".") = 0 And Not StrComp(S, "..") = 0 Then
    S2 = folder + S
    If (GetAttr(S2) And vbDirectory) = vbDirectory Then
      ArrayC = ArrayC + 1
      ReDim Preserve ArrayF(1 To ArrayC) As String
      ArrayF(ArrayC) = S2
    Else
      GetSubFolderFiles = GetSubFolderFiles + 1
      ReDim Preserve FilesArray(1 To GetSubFolderFiles) As String
      FilesArray(GetSubFolderFiles) = S2
    End If
  End If
  S = Dir
Loop

If cDir < ArrayC Then
  cDir = cDir + 1
  folder = ArrayF(cDir)
  GoTo GETFOLDERS
End If
End Function

Public Function DirFilterIN(DirName As String) As String
On Error Resume Next
If Mid$(DirName, Len(DirName), 1) = "\" Then
  DirFilterIN = Mid$(DirName, 1, Len(DirName) - 1)
Else
  DirFilterIN = DirName
End If
End Function
Программисты не глючат - глючат компиляторы...

След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22

    TopList  
cron