Мне было интересно, сможет ли кто-нибудь помочь мне с функцией vb6, которая удалит все файлы в каталоге (исключая подкаталоги).Удалить все файлы в каталоге vb6
ответ
Одна линия, используя VB6 заявление Kill
Kill "c:\doomed_dir\*.*"
help topic says «В Microsoft Windows, убийство поддерживает использование нескольких знаков (*) и одного-символа (?) Подстановочные указать несколько файлов ".
В стороне - я предпочитаю избегать выполнения сценариев Microsoft Scripting Runtime (включая FileSystemObject). По моему опыту, это иногда прерывается на пользовательских машинах, возможно, потому, что их ИТ-отдел параноидален в отношении вирусов.
Я считаю, что это должно работать:
Dim oFs As New FileSystemObject
Dim oFolder As Folder
Dim oFile As File
If oFs.FolderExists(FolderSpec) Then
Set oFolder = oFs.GetFolder(FolderSpec)
'caution!
On Error Resume Next
For Each oFile In oFolder.Files
oFile.Delete True 'setting force to true will delete a read-only file
Next
DeleteAllFiles = oFolder.Files.Count = 0
End If
End Function
Я получаю сообщение об ошибке «User-Defined Type not defined» на «Dim oFs As New FileSystemObject» – zSynopsis
Это потому, что вам нужно добавить ссылку на FileSystemObject, чтобы использовать его. Я не помню, что однако точное имя ссылки. – Corazu
«Чтобы использовать FileSystemObject, вы должны выбрать время выполнения сценариев Microsoft в диалоговом окне« Ссылки на проекты »для своего проекта». В соответствии с: http://support.microsoft.com/kb/186118 – Alex
Я не проверял каждый сценарий, но он должен работать. Он должен удалять каждый файл, и если файл заблокирован или у вас нет доступа, вы должны получить Error 70, который пойман, и вы получите поле Abort, Retry или Ignore.
Sub DeleteAllFilesInDir(ByVal pathName As String)
On Error GoTo errorHandler
Dim fileName As String
If Len(pathName) > 0 Then
If Right(pathName, 1) <> "\" Then pathName = pathName & "\"
End If
fileName = Dir(pathName & "*")
While Len(fileName) > 0
Kill pathName & fileName
fileName = Dir()
Wend
Exit Sub
errorHandler:
If Err.Number = 70 Then
Select Case MsgBox("Could not delete " & fileName & ". Permission denied. File may be open by another user or otherwise locked.", vbAbortRetryIgnore, "Unable to Delete File")
Case vbAbort:
Exit Sub
Case vbIgnore:
Resume Next
Case vbRetry:
Resume
End Select
Else
MsgBox "Error deleting file " & fileName & ".", vbOKOnly Or vbCritical, "Error Deleting File"
End If
End Sub
+1 в симпатии, потому что я не думаю, что это заслуживает -1. Хотя «Kill» & pathname & «\ *. *» Определенно короче. – MarkJ
Казалось бы, что время выполнения сценариев метод DeleteFile FileSystemObject также поддерживает групповые символы, как это работает для меня:
Dim fs As New Scripting.FileSystemObject
fs.Deletefile "C:\Temp\*.jpg", true
Этот подход имеет меньший контроль, чем подход, предложенный @Corazu, но может иметь некоторую полезность в определенных случаев.
- 1. Удалить все файлы в каталоге автоматически?
- 2. Удалить все файлы в каталоге, кроме двух
- 3. Удалить файлы в каталоге
- 4. Держите е файлы в каталоге и удалить все старые файлы
- 5. Удалить определенные файлы в каталоге
- 6. удалить старые файлы в каталоге
- 7. Удалить старые файлы в каталоге
- 8. Моните все файлы в каталоге
- 9. Распаковать все файлы в каталоге
- 10. Переименовать все файлы в каталоге
- 11. Замените все файлы в каталоге
- 12. Процитировать все файлы в каталоге?
- 13. Perl удалять все файлы в каталоге
- 14. Можно ли удалить все файлы в каталоге с помощью XML?
- 15. Как удалить все файлы в каталоге http программно
- 16. Как удалить все файлы в одном конкретном каталоге
- 17. Как удалить ВСЕ ФАЙЛЫ в указанном каталоге приложения?
- 18. Удалить все файлы в каталоге без подкаталогов с Apache Ant
- 19. удалить все файлы, содержащие определенное имя в каталоге
- 20. Как удалить все файлы с расширением .txt в каталоге
- 21. Как удалить все файлы, которые пусты в каталоге?
- 22. Удалить все файлы в каталоге, но сохранить каталог?
- 23. транзакциями удалить все файлы и папки в каталоге
- 24. Удалить все файлы в одном каталоге с Codeigniter
- 25. Как удалить все файлы в каталоге, сохраняя подкаталоги без изменений
- 26. Удалить папку и все файлы в каталоге без glob()
- 27. Получить все файлы в каталоге и все файлы в подкаталогах
- 28. пакетный файл, замените все файлы в каталоге
- 29. Найти «все» файлы в каталоге, не все файлы найдены
- 30. Как удалить файлы, соответствующие шаблону в каталоге
Мне всегда кажется, что это сложно. Мне следовало вспомнить об этом. – Corazu
В Access 2000 использование шаблона '* *. *" 'С командой Kill не удастся, если даже один файл в этом каталоге заблокирован (или открыт). – Spidermain50