On Error Resume Next
baseFolder = "c:\temp"
Set fsObj = CreateObject("Scripting.FileSystemObject")
Set pntFolder = fsObj.GetFolder(baseFolder)
For Each curObj In pntFolder.Files
fsObj.DeleteFile curObj
If Err.Number <> 0 Then
Err.Clear
End If
Next
Как определить, занят ли файл?
Как определить, используется ли файл каким - либо приложением?
Для чего это нужно?
Задача №1 : удалить кучу файлов, а те, что используются - пропустить, и ПРОДОЛЖИТЬ удаление, а не остановить процесс, как это делает винда.
Задача №2: перед сжатием базы убедиться, что она не используется
Насколько я знаю, надёжного общего (для всех возможных случаев) решения данная задача не имеет. Её можно успешно решить лишь для некоторого частного случая. Например, для следующих условий:
- используется ОС из линейки NT;
- файл открыт приложением, умеющим "выставлять" блокировку для открытого файла (скажем, одним из компонентов MS-Office).
Поэкспериментируйте с утилитой [color=blue]NET[/color], запуская её с параметром [color=blue]FILE[/color].
Утилита работает из командной строки, поэтому выводимый ею результат надо либо анализировать визуально, либо перенаправлять в файл.
Если допустить, что приложения, открывшие файлы, сумели их заблокировать, то можно использовать оператор [color=blue]On Error[/color]. Вот пример сценария на VBS, использующего такой приём:
Код:
ЗЫ Точно я этого всего не помню и проверить не могу, поэтому может я и ошибаюсь