ЗАдача следующая: есть папка с файлами (адрес ее известен)... нада сделать так, чтоб при запуске авторуна с флэхи эта папка копировалась на флеху, тож в каку нить папку; и желательно, чтоб процесс копирования(там окошко вылазит) не отображался... А если таковые файлы уже есть, то он не спрашивал, надо ли их заменять))) Прошу написать полный код программы. Спасибо
Чтобы скопировать все файлы вместе с папками которые находятсья в указанной папке. Для этого нужно подключить библиотеку FSO(Проект>Информация. и поставить галочку на Microsoft Scripting Runtime). Затем брось на форму кнопку, вот к ней код:
On Error Resume Next 'чтобы обойти все ошибки
Dim fso As FileSystemObject
Set fso = New Scripting.FileSystemObject
fso.CreateFolder "C:\2" ' создать конечную папку если она несуществует
fso.CopyFolder "C:\1", "C:\2" ' скопировать все с "C:\1" в "C:\2"
=================================================
Также еще можно скопировать все файлы вот таким образом, только есть минус, если в папке находятся подпапки то они небудут копирвоаться т.е. копирвоаться будут только файлы:
Stuart, респект тебе всяческий)! /// Есче вопрос: почему после того, как я сталю флеху, авторун работать не желает? Есть файл autorun.ехе, и файлик autorun.inf с содержанием: [autorun]
shellexecute=autorun.exe... Винда выводит список возможных действий, а прогу запускать не желает нифига
Есть еще такая вещь как Реестр.
В реестре можно расставлять приоритет для autorun.
По умолчанию в 9* Windows стоит в приоритете только
CD rom. Но все это только для увеличения производительности, если мы входим в MyComputer
то система начинает проверять все жесткие диски на
наличие Autorun. По этому он отключен на маловажных
дисках (Сменные носители).
Если шариш в реестре, то вот те путь HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
удали там вот такую вещь NoDriveTypeAutoRun,
по основному смыслу после перезагрузки должно заработать.
3. Работа с файлами
Сейчас мы разберем одну из простейших тем в программенге,но тем не менее вызывающею затруднение у многих начинающих программеров. Я расскажу о том, как работать с фалами вообще( копировать, удалять и тд.), работать с Аски(текстовыми) файлами ( чтение, запись файла). Начнем. Как не странно но для работы с обычными файлами нам будет достаточно всего 2 оператора : filecopy и kill
Копируем файл: допустим у нас есть один файлик с именем 1.txt в папке C:\1\ , а нам нужно скопировать его в C:\2\ . Все просто, пишем следующие:
Filecopy "C:\1\1.txt","C:\2\1.txt"
(*Внимание! Если в каталоге 2 уже находиться файлик с именем 1.txt , то он будет заменен на 1.txt из каталога 1 !!!)
Удаляем файл с диска:
Например мы хотим удалить файл 1.txt из корневой диска C:
Пишем:
Kill ("C:\1.txt"
Перемещаем файл: для этого мы используем два оператора сразу. Например нам нужно переместить файл 1.txt из C:\ в C:\2\ . Пишем:
Filecopy "C:\1.txt","C:\2\1.txt"
Kill ("C:\1.txt"
Переименовываем файл:
Надо переименовать файл 1.txt находящийся в C:\ на 2.txt .
Пишем:
Filecopy "C:\1.txt","C:\2.txt"
Kill ("C:\1.txt"
Устанавливаем атрибуты файла(скрытый, только для чтения и тд.): Для этого используем оператор setattr.
Пишем:
Setattr "C:\1.txt" , vbHidden - теперь файл 1.txt стал скрытым.
Чтобы изменить сразу несколько параметров нужно ставить "+" между каждым значением:
Setattr "C:\1.txt",vbHidden+vbReadOnly -Теперь файл скрытый и только для чтения.
Открыть любой файл, директорию
' Под Windos NT:
Shell "cmd /X /C start c:\mydoc\example.doc"
' Под Windos 9x:
Shell "start c:\mydoc\example.doc"
' через API
' добавляем в модуль
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Sub Command1_Click()
ShellExecute 0, vbNullString, "C:\" & sFile, vbNullString, vbNullString, vbNormalFocus
End Su
4. Работа с папками
Как удалить каталог?
Private Declare Function RemoveDirectory& Lib "kernel32" Alias "RemoveDirectoryA" (ByVal lpPathName As String)
' Удаление каталога (пустого!)
PathName$ = ":\t"
code& = RemoveDirectory(PathName)
If code& = 0 Then
' операция удаления не была выполнена
Else
' каталог удален
End If
Создание директории
Sub MakeDir(dirname As String)
Dim i As Long, path As String
Do
i = InStr(i + 1, dirname & "\", "\"
path = Left$(dirname, i - 1)
If Right$(path, 1) <> ":" And Dir$(path, vbDirectory) = "" Then
MkDir path
End If
Loop Until i >= Len(dirname)
End Sub
Private Sub Command1_Click()
Call MakeDir("C:\Aleks_Soft\1\2\3\"
End Sub
Выводим список всех папок с подпапками
На форму кинем 2 текстовых поля и кнопку, имя первого текстового поля: StartText, имя второго текстового поля OutText и сделай свойство Multiline=true, имя кнопки: CmdStart
Далее пишим код в кнопке:
Static running As Boolean
Dim AllDirs As New Collection
Dim next_dir As Integer
Dim dir_name As String
Dim sub_dir As String
Dim i As Integer
Dim txt As String
If running Then
running = False
CmdStart.Enabled = False
CmdStart.Caption = "Stopping"
Else
running = True
MousePointer = vbHourglass
CmdStart.Caption = "Stop"
OutText.Text = ""
DoEvents
next_dir = 1
AllDirs.Add StartText.Text
Do While next_dir <= AllDirs.Count
dir_name = AllDirs(next_dir)
next_dir = next_dir + 1
sub_dir = Dir$(dir_name & "\*", vbDirectory)
Do While sub_dir <> ""
If UCase$(sub_dir) <> "PAGEFILE.SYS" And sub_dir <> "." And sub_dir <> ".." Then
sub_dir = dir_name & "\" & sub_dir
On Error Resume Next
If GetAttr(sub_dir) And vbDirectory Then AllDirs.Add sub_dir
End If
sub_dir = Dir$(, vbDirectory)
Loop
DoEvents
If Not running Then Exit Do
Loop
txt = ""
For i = 1 To AllDirs.Count
txt = txt & AllDirs(i) & vbCrLf
Next i
OutText.Text = txt
MousePointer = vbDefault
unning = False
End If
Теперь запустим прогу, в текстовом поле StartText пишим: C:\windows, и жмем на кнопку и ждем!!!