VB6 Список и удаление всех файлов в каталоге - PullRequest
1 голос
/ 25 июня 2011

Мне нужно получить имена всех файлов в каталоге, в настоящее время я использую этот код:

Dim File As String
File = Dir$(Environ("AppData") & "\*.exe")

Do While Len(File)
    MsgBox "Deleting: " & Environ("AppData") & "\" & File
Kill Environ("AppData") & "\" & File
    File = Dir$
Loop

Это работает нормально, однако не отображает скрытые / системные файлы или файлы с какими-либо атрибутами, отличными от «обычного», как я могу перечислить файлы независимо от их атрибутов?

Я тоже пробовал это, что имеет тот же результат:

Kill Environ("AppData") & "\*.*"

Ответы [ 2 ]

2 голосов
/ 26 июня 2011

Функция Dir может принимать второй параметр для атрибутов:

File = Dir$(Environ("AppData") & "\*.exe", vbHidden & vbSystem)

Подробнее о функции Dir можно узнать здесь .

2 голосов
/ 26 июня 2011

Я почти всегда использую Microsoft Scripting Runtime для файлового ввода-вывода из VB6. Это просто делает больше, и делает это лучше и легче. Один маленький недостаток в том, что ваша VB-программа теперь зависит от DLL-библиотеки времени выполнения сценариев (scrrun.dll), которую вы должны добавить в качестве ссылки из среды VB6.

Вот пример, который удаляет все файлы из папки.

' Note: This code is untested.

Sub Main()
    DeleteAllFilesInFolder Environ("App_Data")
End Sub

Sub DeleteAllFilesInFolder(strFolder As String)

    Dim fso As Scripting.FileSystemObject
    Dim objFolder As Scripting.Folder
    Dim objFile As Scripting.File

    Set fso = New Scripting.FileSystemObject
    Set objFolder = fso.GetFolder(strFolder)
    For Each objFile in objFolder.Files
        objFile.Delete force:=True
    Next

End Sub
...