Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 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 удаление директории со всеми вложениями, а не только файлов?

Ответить

  Ответы Всего ответов: 12  

Номер ответа: 1
Автор ответа:
 Stars



Вопросов: 41
Ответов: 239
 Профиль | | #1 Добавлено: 25.01.07 12:58
1) Снять все атрибуты (сделать файл видимым)


2)Set NewFso = CreateObject("Scripting.FilesystemObject";)
NewFso.deletefolder ("C:\Имя папки";)

Ответить

Номер ответа: 2
Автор ответа:
 Almakedo



Вопросов: 7
Ответов: 11
 Профиль | | #2 Добавлено: 25.01.07 13:30
2Stars: спасибо, сегодня я стал чуточку умней) Удаление папки работает на ура.

Новый вопрос: "Как снять атрибуты со всех папок и файлов вложения через код VBA?"

Ответить

Номер ответа: 3
Автор ответа:
 Stars



Вопросов: 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
Автор ответа:
 Stars



Вопросов: 41
Ответов: 239
 Профиль | | #4 Добавлено: 25.01.07 13:55
_папок

Ответить

Номер ответа: 5
Автор ответа:
 Almakedo



Вопросов: 7
Ответов: 11
 Профиль | | #5 Добавлено: 25.01.07 14:06
Хотел сделать так: SetAttr "C:\Имя файла или папки", 0 - не работает!

Снимает только с одного конкретного файла: SetAttr "C:\test\level_1\test.txt", 0, скопом не может ((

Ответить

Номер ответа: 6
Автор ответа:
 Stars



Вопросов: 41
Ответов: 239
 Профиль | | #6 Добавлено: 25.01.07 14:10
Ну значит другие способы нуна искать какие!

Ответить

Номер ответа: 7
Автор ответа:
 Stars



Вопросов: 41
Ответов: 239
 Профиль | | #7 Добавлено: 25.01.07 14:13
Хотел сделать так: SetAttr "C:\Имя файла или папки", 0 - не работает!


Папка 1 скрытая
SetAttr "C:\1", VbNormal
Папка 1 не скрытая

Ответить

Номер ответа: 8
Автор ответа:
 Stars



Вопросов: 41
Ответов: 239
 Профиль | | #8 Добавлено: 25.01.07 14:14
а у всех файлов атрибуты можеш поменять простым перебором файлов

Ответить

Номер ответа: 9
Автор ответа:
 Almakedo



Вопросов: 7
Ответов: 11
 Профиль | | #9 Добавлено: 25.01.07 14:28
Вся зассада в том, что неизвестно, какие файлы и папки будут скрытыми, какие для чтения.

Написав: SetAttr "C:\test", 0 - хотел снять все атрибуты со всех папок и файлов, которые лежат в папке test, но не вышло, т.к. данная команда снимает атрибуты только с текущей папки, а на вложения ей уже по боку.

Как замутить перебор всего, что лежит там? У меня цель, снять атрибуты со всего содержимого по такому сетевому пути: "\\10.0.5.1\тестовая папка\" Файлы с какими атрибутами там могут быть я не в курсе, поэтому и нужно скинуть все, а потом NewFso.deletefolder ("Имя папки";)

Ответить

Номер ответа: 10
Автор ответа:
 Stars



Вопросов: 41
Ответов: 239
 Профиль | | #10 Добавлено: 25.01.07 14:49
http://vbnet.ru/forum/show.aspx?id=115116
В код там подставь только изменение атрибутов и всё

Ответить

Номер ответа: 11
Автор ответа:
 Almakedo



Вопросов: 7
Ответов: 11
 Профиль | | #11 Добавлено: 26.01.07 10:26
Решил проще. Не заморачиваться на снятие всех атрибутов, а затем уже удалением файлов. Написал батник, который трет все, игнорируя атрибуты и не выдавая сообщений. Прописал его в код через Shell. Желаемый результат достигнут! Всем спасибо, получил новые знания, следуя Вашим советам! )

Ответить

Номер ответа: 12
Автор ответа:
 Almakedo



Вопросов: 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";), force = False ' force - позволяет удалять файлы с атрибутом read only
    End If
End Sub

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам