Удалить содержимое папки НО НЕ САМУ ПАПКУ!!!

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Alex-pc1
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 24.12.2005 (Сб) 13:23

Удалить содержимое папки НО НЕ САМУ ПАПКУ!!!

Сообщение Alex-pc1 » 26.09.2006 (Вт) 20:22

вопрос таков:
Существует папка, ну допустим C:\DIR1, она является сетевым ресурсом и к некоторым компам подключена как сетевой диск....
в ней есть файлы и папки, количество и название не известно, и не имеет значения.

Необходимо
либо:
удалить все содержимое, но не саму папку
либо:
удалить папку со всем содержимым, но потом создать ее заново, сделать сетевой и восстановить права доступа(помоему проще удалить содержимое)

Допустим, что в момент удаления к файлам никто не обращается, и проверять занят ли файл или ... нет необходимости.

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Сообщение Debugger » 26.09.2006 (Вт) 21:14

Перечилить при помощи Dir все файлы.. И Kill их!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 26.09.2006 (Вт) 21:22

Получить ACL папки. И просто запомнить.
Удалить папку.
Создать папку с одновременным навешиванием того самого запомненного ACL.
NetShareAdd.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 26.09.2006 (Вт) 21:28

ShFileOperation как раз удалит содержимое папки без неё самой.
Если всё делать своими ручками, они скоро отвалятся !

Alex-pc1
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 24.12.2005 (Сб) 13:23

Сообщение Alex-pc1 » 27.09.2006 (Ср) 5:18

Kovu Огромное спасибо!!! все работает!!!
вот что получилось:

Код: Выделить всё
Private Type SHFILEOPSTRUCT
    hWnd As Long
    wFunc As Long
    pFrom As String
    pTo As String
    fFlags As Integer
    fAborted As Boolean
    hNameMaps As Long
    sProgress As String
End Type

Private Const FO_DELETE = &H3
Private Const FOF_NOCONFIRMATION = &H10             '  Don't prompt the user.

Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long

Private Sub Command1_Click()
    Dim SHFileOp As SHFILEOPSTRUCT
    With SHFileOp
        'Delete the file
        .wFunc = FO_DELETE
        'Select the file
        .pFrom = "c:\DIR1\*.*"
        'Allow 'move to recycle bn'
        .fFlags = FOF_NOCONFIRMATION
    End With
    'perform file operation
    SHFileOperation SHFileOp
    MsgBox "Все удалено!!!"
End Sub

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 27.09.2006 (Ср) 8:31

Alex-pc1 писал(а):вот что получилось:


А можно еще чуть сократить:

Код: Выделить всё
    Dim fso As New Scripting.FileSystemObject
    Dim s As String
   
    s = "C:\Temp\Test\*"
    fso.DeleteFolder s
    fso.DeleteFile s
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 122

    TopList