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

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Akella
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 144
Зарегистрирован: 15.09.2004 (Ср) 14:26
Откуда: Россия, Тюмень

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

Сообщение Akella » 03.02.2005 (Чт) 14:16

как скопировать папку со ВСЕМ Содержимым. я стал копировать по файлам, но проблема в том что: а если в папке ещё есть папки или HTML со своими .files. ладно еслибы одна папка а если надо будет много папок копировать.
Не бойся что не знаешь, бойся что не учишься.

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 03.02.2005 (Чт) 14:34

Наверное что-то не то, но если типа shell ( "xcopy /E" ) с небольшими изменениями ...

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 03.02.2005 (Чт) 14:43

Через FSO :!:

Akella
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 144
Зарегистрирован: 15.09.2004 (Ср) 14:26
Откуда: Россия, Тюмень

Сообщение Akella » 03.02.2005 (Чт) 14:49

Через FSO
как черезFSO
Не бойся что не знаешь, бойся что не учишься.

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 03.02.2005 (Чт) 14:58

Akella писал(а):
Через FSO
как черезFSO


Вот статья еще с старого VBS

Гайдар Магдануров писал(а):File System Object

При использовании File System Object (сокращенно FSO) работа с файлами, папками и дисками значительно упрощается, чем при использовании стандартных операторов Visual Basic. Поэтому благодаря использовании FSO возможно более простое выполнение операций с объектами файловой системы, не требующих от программиста больших усилий. При этом это наиболее простой способ работы с файлами и текстовыми данными из VBScript, что очень часто бывает необходимым при создании ASP, таких как гостевые книги, форумы и чаты.

Так вот, для использования FSO вам нужно подключить библиотеку Microsoft Scripting Runtime. После этого, для получения доступа к возможностям библиотеки вам нужно объявить ее, что можно сделать двумя способами:

Dim myFSO As Scripting.FileSystemObject

Private Sub Form_Load()
Set myFSO = New Scripting.FileSystemObject
End Sub

Или так:

Dim myFSO As Object

Private Sub Form_Load()
Set myFSO = CreateObject("Scripting.FileSystemObject")
End Sub


Лично мне нравиться второй вариант, поэтому я буду использовать его.

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

Private Sub Command1_Click()
Dim myFSO As Object 'Объявляю объектную переменную
Dim myTS As TextStream 'Объявляем текстовый поток
Set myFSO = CreateObject("Scripting.FileSystemObject") 'Создаем объект файловой системы
Set myTS = myFSO.CreateTextFile(Text1.Text, True) 'Открываем поток создавая файл, перезаписывая существующий (True)
myTS.Write Text2.Text 'Пишем содержимое второго текстового окна
myTS.Close 'Закрываем поток
Set myFSO = Nothing 'Чистим память от наших файловых объектов
End Sub


В принципе можно записать и по другому. При открытии файла для чтения строки выглядят так:

Set myTS = fso.OpenTextFile("c:\test.txt", ForWriting)
Теперь переделаем эту программу для чтения данных из файла. Делаем для text2 multiline=true,
что бы отображать все содержимое нашего файла. Добавляете следующий код в событие клика по кнопке.
Private Sub Command1_Click() Dim myFSO As Object Dim myTS As TextStream Set myFSO = CreateObject("Scripting.FileSystemObject") Dim myfile As File 'Объявляем файловую переменную Set myfile = myFSO.GetFile(Text1.Text) 'Присваеваем нашей переменной файла - файл, имя которого введено в text1 Set myTS = myfile.OpenAsTextStream(ForReading) 'Открываем для чтения Text2.Text = myTS.ReadAll ' Читаем весь файл myTS.Close End Sub
Теперь приведу методы TextStream:
Write Пишет в файл.
WriteLine Пишет в файл одну строку.
WriteBlankLines Пишет заданное количество строк.
Skip Пропускает заданное число символов.
SkipLine Пропускает одну строку.
Read Читает.
ReadAll Читает все содержимое файла.
ReadLine Читает строку.
Close Закрывает текстовый поток.
Мы научились (я надеюсь ;-) работать с текстовыми файлами, а теперь на плохо бы научиться работать с файлами и папками вообще. Для этого существуют следующие методы: CopyFile Копирует файлы.
CopyFolder Копирует папки.
MoveFile Перемещает файлы.
MoveFolder Перемещает папки.
DeleteFile Удаляет файлы.
DeleteFolder Удаляет папки.
GetParentFolderName Получает имя доминантной папки.
GetAbsolutePathName Получает полный путь.
GetDriveName Получает имя устройства.
GetFileName Получает имя файла
FileExist Проверяет наличие файла.
FolderExist Проверяет наличие папки.
DriveExist Проверяет наличие устройства.
GetSpecialFolder Получает путь к папкам системы. Temp,System32,System,Windows.

Использование большинства этих методов одинаково, поэтому разберу наиболее сложные.
Копирование/перемещение файлов и папок.
myFSO.CopyFile "File1","File2", True/False ' указывает перезаписывать файл или нет.
Аналогично перемещение, только вместо Copy - Move.

Теперь немного поработаем с устройствами. Создайте форму, на которой разместите текстовое окно и кнопу. В код клика по кнопке добавляете следующее:
Private Sub Command1_Click()
Dim myFSO As Object
Dim myDRV As Drive
Set myFSO = CreateObject("Scripting.FileSystemObject")
Set myDRV = myFSO.GetDrive(myFSO.GetDriveName(Text1.Text)) 'Диск задается в текстовом поле text1, обязательно так X: !
a = "Имя тома: " & myDRV.VolumeName & vbCrLf
b = "Доступное пространство: " & myDRV.AvailableSpace / 1048576 & " MB" & vbCrLf
c = "Серийный номер: " & myDRV.SerialNumber & vbCrLf
d = "Тип устройства: " & myDRV.DriveType & vbCrLf
e = "Общий размер: " & myDRV.TotalSize & vbCrLf
f = "Сетевое имя: " & myDRV.ShareName & vbCrLf
g = "Готовнорсть: " & myDRV.IsReady
Set myFSO = Nothing
MsgBox a & b & c & d & e & f & g, vbInformation, "Информация о диске"
End Sub

Не правда ли, удобно? Не нужно лезть в дебри API, все уже сделано за вас. Но учтите, что в данную функцию буква диска должна входить с двоеточием, иначе будет ошибка.

При работе с папками их создание осуществляется командой CreateFolder, так же как и создание текстового файла.

При работе с файлами и папками немного отличается их определение. Для папок и файлов оно выглядит так:

Private Sub Command1_Click()
Dim myFSO As Object
Dim myFLDR As Folder
Set myFSO = CreateObject("Scripting.FileSystemObject")
Set myFLDR = myFSO.GetFolder(Text1.Text) 'Существенное отличие от устройств
a = "Доминантная папка: " & myFLDR.ParentFolder & vbCrLf
b = "Атрибуты: " & myFLDR.Attributes
Set myFSO = Nothing
MsgBox a & b
End Sub


Для работы с файлами не изменяйте форму, а только перепишите код:

Private Sub Command1_Click()
Dim myFSO As Object
Dim myFL As File
Set myFSO = CreateObject("Scripting.FileSystemObject")
Set myFL = myFSO.GetFile(Text1.Text)
a = "Место расположения: " & myFL.ParentFolder & vbCrLf
b = "Атрибуты: " & myFL.Attributes & vbCrLf
c = "Создан: " & myFL.DateCreated & vbCrLf
d = "Последний раз запрашивался: " & myFL.DateLastAccessed & vbCrLf
e = "Последний раз изменялся: " & myFL.DateLastModified & vbCrLf
f = "Размер: " & myFL.Size & " байт"
Set myFSO = Nothing
MsgBox a & b & c & d & e & f
End Sub


При таком способе работы становятся доступны методы вроде Delete, Copy, Move, OpemAsTextStream. А для папок CreateTextFile.

Вот основные методы работы с объектами файловой системы с помощью Microsoft Scripting Runtime, и эти методы очень помогают при создании ASP работающих с файлами и папками.

С вопросами мыльте gmsvb@yandex.ru . Или заходите на мой сайт http://gmsvb.h1.ru/ посвященный программирование для Web. Только вы не найдете там ASP, т.к. все здесь на VBS и мне ли делать лишнюю работу ;-).




Mleha
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 146
Зарегистрирован: 06.10.2004 (Ср) 7:49
Откуда: Ангарск

Сообщение Mleha » 03.02.2005 (Чт) 16:38

Я делал поиск подпапок и файлов в указанной папке.
Может просто взять их и скопировать.
Глянь тут


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

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

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

    TopList