Страница: 1 |
Вопрос: VBS: Обход удаления используемых файлов | Добавлено: 20.01.10 11:33 |
Автор вопроса: ![]() |
В общем проблема следующая: есть момент в скрипте, который удаляет файлы и подпапки из заданной директории. Однако в ней могут находиться файлы, которые используются/открыты в настоящее время. Нужно, чтобы удалились только неиспользуемые, а блокируемые/используемые файлы он оставил.
Я новичок в VBS, поэтому использовал следующую конструкцию: 'uProf - заданная папка в которой необходимо произвести такую выборочную зачистку If oFSO.FolderExists(uProf) = true then oFSO.DeleteFolder uProf & "\*", 0 oFSO.DeleteFile uProf & "\*", 0 end if Однако при нахождении используемого файла - выдается ошибка "разрешение отклонено". Как лучше сделать? Можно конечно прописать On Error Resume Next ... , но может есть изящнее варианты? |
Ответы | Всего ответов: 6 |
Номер ответа: 1 Автор ответа: ![]() ![]() ICQ: 250543104 Вопросов: 13 Ответов: 118 |
Профиль | Цитата | #1 | Добавлено: 20.01.10 12:16 |
зря недооцениваешь возможности On Error Resume Next
рекомендую гуглить в сторону Err.Clear Err.Number Err.Description |
Номер ответа: 2 Автор ответа: ![]() ![]() ICQ: 250543104 Вопросов: 13 Ответов: 118 |
Профиль | Цитата | #2 | Добавлено: 20.01.10 12:24 |
Кстати, раз уж пошла такая резня бензопилой:
Думаю - разберешься Такая конструкция точно сработает. Если не нужны дополнительные проверки файла - удалишь. Ну и On Error Resume Next тоже напишешь если понадобится strFolder="c:\Windows\temp" If right(strFolder,"\" ![]() Set objFSO=Createobject("Scripting.Filesystemobject" ![]() Set objFolder=objFSO.GetFolder Set objFiles=objFolder.Files For Each objFile In objFiles a=split(ucase(objFile.Name), "." ![]() strExtension=a(ubound ![]() strFileName=ucase(Left(objFile.Name,len(objFile.Name)-len(strExtension)) If strExtension=".TMP" Then objFSO.DeleteFile strFolder & "\" & objFile.Name, True Next |
Номер ответа: 3 Автор ответа: ![]() ![]() ICQ: 250543104 Вопросов: 13 Ответов: 118 |
Профиль | Цитата | #3 | Добавлено: 20.01.10 12:25 |
фикс (из-за смайлов):
a=ubound( a ) |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() Вопросов: 1 Ответов: 2 |
Профиль | Цитата | #4 | Добавлено: 25.01.10 09:41 |
ок. Попробую... |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() Вопросов: 1 Ответов: 2 |
Профиль | Цитата | #5 | Добавлено: 27.01.10 09:16 |
блин, есть проблема, написал следующее:
Все вроде работает, однако появилось 2 момента: 1.
2.
|
Номер ответа: 6 Автор ответа: ![]() ![]() ICQ: 250543104 Вопросов: 13 Ответов: 118 |
Профиль | Цитата | #6 | Добавлено: 27.01.10 09:35 |
давай проверим. создай папку C:\TEMP
в ней файл с произвольным именем подпапку 123, внутри файл aaa подпапку 321, внутри файл bbb после этого скопируй скрипт, выполни и посмотри результаты выполнения в папке C:\TEMP On Error Resume Next strFolder="C:\TEMP" Set objFSO=Createobject("Scripting.Filesystemobject" ![]() Set objFolder=objFSO.GetFolder(strFolder) Set objFiles=objFolder.Files For Each objFile In objFiles objFSO.DeleteFile strFolder & "\" & objFile.Name, True Next For Each objSubFolder In objFolder.SubFolders Wscript.Echo objSubFolder.Name objFSO.DeleteFolder strFolder & "\" & objSubFolder.Name Next будут вопросы - пиши письма |
Страница: 1 |
|