Страница: 1 |
|
Вопрос: Команда 'KILL' - игнорирование аттрибутов файла
|
Добавлено: 25.01.07 12:33
|
|
Автор вопроса: Almakedo
|
Всем привет!
В 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 удаление директории со всеми вложениями, а не только файлов?
Ответить
|
Номер ответа: 1 Автор ответа:
Stars
![](images/starBlue.gif) ![](images/starBlue.gif)
Вопросов: 41 Ответов: 239
|
Профиль | | #1
|
Добавлено: 25.01.07 12:58
|
1) Снять все атрибуты (сделать файл видимым)
2) Set NewFso = CreateObject("Scripting.FilesystemObject"
NewFso.deletefolder ("C:\Имя папки" ![;)](./smiles/animated/4.gif)
Ответить
|
Номер ответа: 2 Автор ответа:
Almakedo
![](images/starRed.gif)
Вопросов: 7 Ответов: 11
|
Профиль | | #2
|
Добавлено: 25.01.07 13:30
|
2Stars: спасибо, сегодня я стал чуточку умней) Удаление папки работает на ура.
Новый вопрос: "Как снять атрибуты со всех папок и файлов вложения через код VBA?"
Ответить
|
Номер ответа: 5 Автор ответа:
Almakedo
![](images/starRed.gif)
Вопросов: 7 Ответов: 11
|
Профиль | | #5
|
Добавлено: 25.01.07 14:06
|
Хотел сделать так: SetAttr "C:\Имя файла или папки", 0 - не работает!
Снимает только с одного конкретного файла: SetAttr "C:\test\level_1\test.txt", 0, скопом не может ((
Ответить
|
Номер ответа: 7 Автор ответа:
Stars
![](images/starBlue.gif) ![](images/starBlue.gif)
Вопросов: 41 Ответов: 239
|
Профиль | | #7
|
Добавлено: 25.01.07 14:13
|
Хотел сделать так: SetAttr "C:\Имя файла или папки", 0 - не работает!
Папка 1 скрытая
SetAttr "C:\1", VbNormal
Папка 1 не скрытая
Ответить
|
Номер ответа: 9 Автор ответа:
Almakedo
![](images/starRed.gif)
Вопросов: 7 Ответов: 11
|
Профиль | | #9
|
Добавлено: 25.01.07 14:28
|
Вся зассада в том, что неизвестно, какие файлы и папки будут скрытыми, какие для чтения.
Написав: SetAttr "C:\test", 0 - хотел снять все атрибуты со всех папок и файлов, которые лежат в папке test, но не вышло, т.к. данная команда снимает атрибуты только с текущей папки, а на вложения ей уже по боку.
Как замутить перебор всего, что лежит там? У меня цель, снять атрибуты со всего содержимого по такому сетевому пути: "\\10.0.5.1\тестовая папка\" Файлы с какими атрибутами там могут быть я не в курсе, поэтому и нужно скинуть все, а потом NewFso.deletefolder ("Имя папки"
Ответить
|
Номер ответа: 11 Автор ответа:
Almakedo
![](images/starRed.gif)
Вопросов: 7 Ответов: 11
|
Профиль | | #11
|
Добавлено: 26.01.07 10:26
|
Решил проще. Не заморачиваться на снятие всех атрибутов, а затем уже удалением файлов. Написал батник, который трет все, игнорируя атрибуты и не выдавая сообщений. Прописал его в код через Shell. Желаемый результат достигнут! Всем спасибо, получил новые знания, следуя Вашим советам! )
Ответить
|
Номер ответа: 12 Автор ответа:
Almakedo
![](images/starRed.gif)
Вопросов: 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" Then
Exit Sub
Else
Set oFolder = NewFso.GetFolder("\\10.0.5.1\test"
Set NewFso = CreateObject("Scripting.FilesystemObject"
NewFso.deletefolder ("\\10.0.5.1\test" ![;)](./smiles/animated/4.gif) , force = False ' force - позволяет удалять файлы с атрибутом read only
End If
End Sub
Ответить
|
Страница: 1 |
Поиск по форуму