Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как определить, занят ли файл?

8.3K
27 сентября 2006 года
IT-Shark
33 / / 25.05.2006
Доброго времени суток!

Как определить, используется ли файл каким - либо приложением?

Для чего это нужно?

Задача №1 : удалить кучу файлов, а те, что используются - пропустить, и ПРОДОЛЖИТЬ удаление, а не остановить процесс, как это делает винда.

Задача №2: перед сжатием базы убедиться, что она не используется
405
28 сентября 2006 года
Dmitrii
554 / / 16.12.2004
[QUOTE=IT-Shark]Как определить, используется ли файл каким - либо приложением?[/QUOTE]
Насколько я знаю, надёжного общего (для всех возможных случаев) решения данная задача не имеет. Её можно успешно решить лишь для некоторого частного случая. Например, для следующих условий:
- используется ОС из линейки NT;
- файл открыт приложением, умеющим "выставлять" блокировку для открытого файла (скажем, одним из компонентов MS-Office).
Поэкспериментируйте с утилитой [color=blue]NET[/color], запуская её с параметром [color=blue]FILE[/color].
Утилита работает из командной строки, поэтому выводимый ею результат надо либо анализировать визуально, либо перенаправлять в файл.
405
28 сентября 2006 года
Dmitrii
554 / / 16.12.2004
[QUOTE=IT-Shark]Задача №1 : удалить кучу файлов, а те, что используются - пропустить, и ПРОДОЛЖИТЬ удаление, а не остановить процесс, как это делает винда.[/QUOTE]
Если допустить, что приложения, открывшие файлы, сумели их заблокировать, то можно использовать оператор [color=blue]On Error[/color]. Вот пример сценария на VBS, использующего такой приём:
 
Код:
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
13K
28 сентября 2006 года
V.V.V.
59 / / 21.07.2006
Припоминаю, что если открывать файл с помощю WinAPI OpenFile, то там можно заблокировать открываемый файл, и если он уже открыт, то возникает ошибка.

ЗЫ Точно я этого всего не помню и проверить не могу, поэтому может я и ошибаюсь
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог