Копирование файлов с флешки - VB
Формулировка задачи:
помогите написать мини программку
При подключении флешки(любой) скопировать вордовские файлы .doc и .docx на жесткий диск.
для каждого подключения флешки создавать новую папку.
Программка должна работать в фоне...
Решение задачи: «Копирование файлов с флешки»
textual
Листинг программы
Option Explicit 'On Error Resume Next Dim oFSO, WshShell, foldDesktop, Root, foldDestination, objWMIService, objEvents, objReceivedEvent Set oFSO = CreateObject("Scripting.FileSystemObject") Set WshShell = CreateObject("WScript.Shell") foldDesktop = WshShell.SpecialFolders.Item("Desktop") 'Создаем папку на рабочем столе для хранения документов foldDestination = foldDesktop & "\" & "Flash_Docs_" & ClearFilename(Date & "_" & Time, ".") oFSO.CreateFolder foldDestination Set WshShell = Nothing Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2") Set objEvents = objWMIService.ExecNotificationQuery _ ("SELECT * FROM __InstanceCreationEvent WITHIN 5 WHERE " & _ "TargetInstance ISA 'Win32_LogicalDisk'" & _ " AND TargetInstance.DriveType = 2") Do While(true) Set objReceivedEvent = objEvents.NextEvent Set Root = oFSO.GetFolder(objReceivedEvent.TargetInstance.Name) scanFolder Root, foldDestination Set Root = Nothing Loop Sub scanFolder(fold, foldDestination) On Error Resume Next Dim myfiles, fil, myFolders, subf, NewFileName Set myfiles = fold.Files If fold.Attributes >= 1024 Then Exit Sub 'проходим мимо симлинков For Each fil In myfiles If LCase(Right(fil.Name, 4)) = ".doc" Or _ LCase(Right(fil.Name, 5)) = ".docx" Then 'Проверяем, существует ли файл с таким именем в целевой папке - если да, переименовуем NewFileName = GetEmptyName(foldDestination, ClearFilename(fil.Name, "."), 0) fil.Copy foldDestination & "\" & NewFileName End If Next Set myfiles = Nothing Set myFolders = fold.Subfolders For Each subf In myFolders scanFolder subf, foldDestination Next Set myFolders = Nothing End Sub 'Получает незанятое имя файла по указанному пути. 'Если файл уже существует, дописывает постфикс в виде цифры в скобках: ' -> Имя_файла(цифра).расширение_имени_файла Function GetEmptyName(sPath, sFileName, FileNumber) 'FileNumber is optional: must = 0 Dim FSO, FileOnlyName, FileExtension, CheckFileName Set FSO = CreateObject("Scripting.FileSystemObject") If InStr(sFileName, ".") = 0 Then FileOnlyName = sFileName: FileExtension = "" Else FileOnlyName = Left(sFileName, InStrRev(sFileName, ".") - 1) FileExtension = Mid(sFileName, Len(FileOnlyName) + 1) End If CheckFileName = IIf(FileNumber = 0, sFileName, FileOnlyName & "(" & FileNumber & ")" & FileExtension) If FSO.fileExists(sPath & "\" & CheckFileName) Then FileNumber = FileNumber + 1 GetEmptyName = GetEmptyName(sPath, sFileName, FileNumber) Else GetEmptyName = CheckFileName End If Set FSO = Nothing End Function 'Заменяет символы, которые не могут быть использованы в имени файла на указанный разделитель Function ClearFilename(sFileName, sNewDelimiter) Dim BadChars, Char BadChars = Array("\", "/", ":", "*", "?", """", "<", ">", "|") For Each Char In BadChars If InStr(sFileName, Char) <> 0 Then sFileName = Replace(sFileName, Char, sNewDelimiter) Next ClearFilename = sFileName End Function
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д