VBS: Обход удаления используемых файлов

Программирование на Active Server Pages и VBScript.
Lnduk
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 20.01.2010 (Ср) 10:52

VBS: Обход удаления используемых файлов

Сообщение Lnduk » 20.01.2010 (Ср) 11:08

В общем проблема следующая: есть момент в скрипте, который удаляет файлы и подпапки из заданной директории. Однако в ней могут находиться файлы, которые используются/открыты в настоящее время. Нужно, чтобы удалились только неиспользуемые, а блокируемые/используемые файлы он оставил.
Я новичок в VBS, поэтому использовал следующую конструкцию:
Код: Выделить всё
'uProf - заданная папка в которой необходимо произвести такую выборочную зачистку
If oFSO.FolderExists(uProf) = true then
   oFSO.DeleteFolder uProf & "\*", 0
   oFSO.DeleteFile uProf & "\*", 0
end if

Однако при нахождении используемого файла - выдается ошибка "разрешение отклонено". Как лучше сделать? Можно конечно прописать On Error Resume Next ... , но может есть изящнее варианты?

Roman Koff
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 495
Зарегистрирован: 17.09.2008 (Ср) 9:22
Откуда: От туда

Re: VBS: Обход удаления используемых файлов

Сообщение Roman Koff » 20.01.2010 (Ср) 15:47

On Error Resume Next - это какраз правильное решение.
ASP имеет мало чего общего с VBS. попроси модератора, чтобы тебя перенесли в раздел VBA, к примеру ...
Слава роботам! Убить всех человеков! Bite my shiny metal ass!

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: VBS: Обход удаления используемых файлов

Сообщение Денис » 20.01.2010 (Ср) 16:11

Roman Koff писал(а):попроси модератора, чтобы тебя перенесли в раздел VBA, к примеру ...

Он всё правильно сделал. Скрипты, ASP... Всё правильно, да. И насчет On Error тоже правильно. Да.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Lnduk
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 20.01.2010 (Ср) 10:52

Re: VBS: Обход удаления используемых файлов

Сообщение Lnduk » 21.01.2010 (Чт) 10:54

Всем спасибо. Сделаю через ON ERROR.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: VBS: Обход удаления используемых файлов

Сообщение Antonariy » 21.01.2010 (Чт) 11:12

Roman Koff писал(а):ASP имеет мало чего общего с VBS. попроси модератора, чтобы тебя перенесли в раздел VBA, к примеру ...
ASP чуть менее, чем наполовину состоит из стандартного виндового скриптового движка, который поддерживает как VBS так и JS. На остальную половину — из IIS.
Лучший способ понять что-то самому — объяснить это другому.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: VBS: Обход удаления используемых файлов

Сообщение Денис » 21.01.2010 (Чт) 11:34

Antonariy писал(а):ASP чуть менее, чем наполовину состоит из стандартного виндового скриптового движка

Я бы сказал, чуть менее, чем полностью. Ну или хотя бы чуть более, чем наполовину.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Roman Koff
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 495
Зарегистрирован: 17.09.2008 (Ср) 9:22
Откуда: От туда

Re: VBS: Обход удаления используемых файлов

Сообщение Roman Koff » 22.01.2010 (Пт) 12:54

Загнобили ... понял что лох ... Плохо подпись к форуму прочитал ...
Слава роботам! Убить всех человеков! Bite my shiny metal ass!

Lnduk
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 20.01.2010 (Ср) 10:52

Re: VBS: Обход удаления используемых файлов

Сообщение Lnduk » 27.01.2010 (Ср) 9:24

блин, есть проблема, написал следующее:
Код: Выделить всё
IF oFSO.FolderExists(arrTMPflds(i)) = true then
   oFSO.DeleteFolder arrTMPflds(i) & "\*", 0
   Set oFolder=oFSO.GetFolder(arrTMPflds(i))
   Set oFiles=oFolder.Files
   For Each oFile In oFiles
       On Error Resume Next
       oFSO.DeleteFile arrTMPflds(i) & "\" & oFile.Name, 0
   Next
END IF


Все вроде работает, однако появилось 2 момента:
1.
Код: Выделить всё
oFSO.DeleteFolder arrTMPflds(i) & "\*", 0
- удаляет не полностью, если в подпапках имеются используемые файлы - остается вся папка, плюс к этому далеко не все папки удаляются хотя там все хорошо... Почему?
2.
Код: Выделить всё
oFSO.DeleteFile arrTMPflds(i) & "\" & oFile.Name, 0
- тоже удаляются не все файлы, хотя не используются и все разрешения есть (аттрибуты чистые).

Stinger
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 3
Зарегистрирован: 16.03.2015 (Пн) 22:18
Откуда: Казань

Re: VBS: Обход удаления используемых файлов

Сообщение Stinger » 17.03.2015 (Вт) 18:39

А зачем изобретать какие то скрипты, ведь в диспетчере задач можно "приостановить процесс" и дальше все на свое усмотрение. Или я что то не то говорю?


Вернуться в ASP и VBScript

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing-бот и гости: 3

    TopList