Страница: 1 |
Вопрос: Команда 'KILL' - игнорирование аттрибутов файла | Добавлено: 25.01.07 12:33 |
Автор вопроса: ![]() |
Всем привет!
В VBA есть возможность удалять файлы с помощью команды "kill". К примеру: Kill ("C:\Test\Папка с файлами моего босса\*.*") удалит все файлы содержащиеся в папке. Все бы хорошо, но вот установив на файл аттрибут "Hidden", происходит ошибка: "Run-time error '53'" "File Not Found", а при установке аттрибута "Read only": "Run-time error '75'" "Path/File access error". Вопросы: 1) как сделать возможным удаление файлов с аттрибутами "скрытый" и "только для чтения"? 2) как реализовать в VBA удаление директории со всеми вложениями, а не только файлов? |
Ответы | Всего ответов: 12 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() Вопросов: 41 Ответов: 239 |
Профиль | Цитата | #1 | Добавлено: 25.01.07 12:58 |
1) Снять все атрибуты (сделать файл видимым)
2)Set NewFso = CreateObject("Scripting.FilesystemObject" ![]() NewFso.deletefolder ("C:\Имя папки" ![]() |
Номер ответа: 2 Автор ответа: ![]() ![]() Вопросов: 7 Ответов: 11 |
Профиль | Цитата | #2 | Добавлено: 25.01.07 13:30 |
2Stars: спасибо, сегодня я стал чуточку умней) Удаление папки работает на ура.
Новый вопрос: "Как снять атрибуты со всех папок и файлов вложения через код VBA?" |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() Вопросов: 41 Ответов: 239 |
Профиль | Цитата | #3 | Добавлено: 25.01.07 13:50 |
VbNormal -Обычный файл значение 0
VbReadOnly -Файл только для чтения значение 1 VbHiden -Скрытый файл значение 2 VbSystem -Системный файл значение 4 VbDirectory -Каталог(Папка) значение 16 VbArhive -Архивный файл значение 32 SetAttr "C:\Имя файла или папки", VbHiden + VbReadOnly только не знаю будет ли это работать для вложенных файлов для |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() Вопросов: 41 Ответов: 239 |
Профиль | Цитата | #4 | Добавлено: 25.01.07 13:55 |
_папок |
Номер ответа: 5 Автор ответа: ![]() ![]() Вопросов: 7 Ответов: 11 |
Профиль | Цитата | #5 | Добавлено: 25.01.07 14:06 |
Хотел сделать так: SetAttr "C:\Имя файла или папки", 0 - не работает!
Снимает только с одного конкретного файла: SetAttr "C:\test\level_1\test.txt", 0, скопом не может (( |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() Вопросов: 41 Ответов: 239 |
Профиль | Цитата | #6 | Добавлено: 25.01.07 14:10 |
Ну значит другие способы нуна искать какие! |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() Вопросов: 41 Ответов: 239 |
Профиль | Цитата | #7 | Добавлено: 25.01.07 14:13 |
Хотел сделать так: SetAttr "C:\Имя файла или папки", 0 - не работает!
Папка 1 скрытая SetAttr "C:\1", VbNormal Папка 1 не скрытая |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() Вопросов: 41 Ответов: 239 |
Профиль | Цитата | #8 | Добавлено: 25.01.07 14:14 |
а у всех файлов атрибуты можеш поменять простым перебором файлов |
Номер ответа: 9 Автор ответа: ![]() ![]() Вопросов: 7 Ответов: 11 |
Профиль | Цитата | #9 | Добавлено: 25.01.07 14:28 |
Вся зассада в том, что неизвестно, какие файлы и папки будут скрытыми, какие для чтения.
Написав: SetAttr "C:\test", 0 - хотел снять все атрибуты со всех папок и файлов, которые лежат в папке test, но не вышло, т.к. данная команда снимает атрибуты только с текущей папки, а на вложения ей уже по боку. Как замутить перебор всего, что лежит там? У меня цель, снять атрибуты со всего содержимого по такому сетевому пути: "\\10.0.5.1\тестовая папка\" Файлы с какими атрибутами там могут быть я не в курсе, поэтому и нужно скинуть все, а потом NewFso.deletefolder ("Имя папки" ![]() |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() Вопросов: 41 Ответов: 239 |
Профиль | Цитата | #10 | Добавлено: 25.01.07 14:49 |
http://vbnet.ru/forum/show.aspx?id=115116
В код там подставь только изменение атрибутов и всё |
Номер ответа: 11 Автор ответа: ![]() ![]() Вопросов: 7 Ответов: 11 |
Профиль | Цитата | #11 | Добавлено: 26.01.07 10:26 |
Решил проще. Не заморачиваться на снятие всех атрибутов, а затем уже удалением файлов. Написал батник, который трет все, игнорируя атрибуты и не выдавая сообщений. Прописал его в код через Shell. Желаемый результат достигнут! Всем спасибо, получил новые знания, следуя Вашим советам! ) |
Номер ответа: 12 Автор ответа: ![]() ![]() Вопросов: 7 Ответов: 11 |
Профиль | Цитата | #12 | Добавлено: 29.01.07 14:27 |
Сегодня сделал все по грамотному. Привожу код:
Sub killer()
Dim NewFso As New Scripting.FileSystemObject, oFolder As Folder If Not NewFso.FolderExists("\\10.0.5.1\test" ![]() Exit Sub Else Set oFolder = NewFso.GetFolder("\\10.0.5.1\test" ![]() Set NewFso = CreateObject("Scripting.FilesystemObject" ![]() NewFso.deletefolder ("\\10.0.5.1\test" ![]() End If End Sub |
Страница: 1 |
|