Сейчас на форуме: hgdagon, asfa, bartolomeo (+6 невидимых) |
![]() |
eXeL@B —› Программирование —› ? VBS "правильное" удаление |
Посл.ответ | Сообщение |
|
Создано: 08 сентября 2006 10:02 · Личное сообщение · #1 Заморочка такая- допустим есть VBS скрипт (упрощенный пример): On Error Resume Next Set FileSystemObject = CreateObject("scripting.filesystemobject") FileSystemObject.DeleteFolder "g:\FOLDER1\*" , true Смысл понятен- удаляет на диске G в папке FOLDER1 все вложенные папки. Проблема в том, что при отказе в доступе к какой-либо папке в директории процесс останавливается и папки названия которых по алфавиту идут после "проблемной" не удаляются. Как решить вопрос? ![]() |
|
Создано: 08 сентября 2006 11:43 · Личное сообщение · #2 |
|
Создано: 08 сентября 2006 12:35 · Личное сообщение · #3 |
|
Создано: 08 сентября 2006 14:21 · Личное сообщение · #4 |
|
Создано: 08 сентября 2006 14:21 · Личное сообщение · #5 |
|
Создано: 09 сентября 2006 01:49 · Личное сообщение · #6 Вот процедура, которая удоляет без всяких ФСО... Private Sub ClearDirectory(psDirName) Dim sSubDir If Len(psDirName) > 0 Then If Right(psDirName, 1) <> "\" Then psDirName = psDirName & "\" End If On Error Resume Next Kill psDirName & "*.*" DoEvents sSubDir = Dir(psDirName, vbDirectory) Do While Len(sSubDir) > 0 If sSubDir <> "." And _ sSubDir <> ".." Then If (GetAttr(psDirName & sSubDir) And _ vbDirectory) = vbDirectory Then ClearDirectory psDirName & _ sSubDir & "\" RmDir psDirName & sSubDir DoEvents sSubDir = Dir(psDirName, vbDirectory) Else Kill psDirName & sSubDir sSubDir = Dir End If Else sSubDir = Dir End If Loop End If End Sub ![]() |
|
Создано: 09 сентября 2006 06:46 · Поправил: VOLKOFF · Личное сообщение · #7 Rascal пишет: Потому как VBScript юзается в этих редакторах ...в смысле? Писать код удобней ИМХО в VBS отладчике ![]() d1v0x пишет: Вот процедура, которая удоляет без всяких ФСО... Ну не то что бы ФСО меня напрягали... ![]() Идеальным выходом было бы For Each Folder In применяемый для спец папок, но для обычных он не пашет... ![]() |
|
Создано: 09 сентября 2006 06:56 · Личное сообщение · #8 |
|
Создано: 10 сентября 2006 04:51 · Поправил: alexas · Личное сообщение · #9 VOLKOFF пишет: Смысл понятен- удаляет на диске G в папке FOLDER1 все вложенные папки. Используй вот такой вызов: Call DelSubFoldersKrasivo("g:\FOLDER1")
![]() |
|
Создано: 10 сентября 2006 05:28 · Поправил: VOLKOFF · Личное сообщение · #10 |
|
Создано: 10 сентября 2006 11:00 · Личное сообщение · #11 |
|
Создано: 10 сентября 2006 11:59 · Поправил: alexas · Личное сообщение · #12 Shidla пишет: MS Word и Ёxel поддорживают внутренний язык программирования (VBS какраз) Не могу больше эту ерунду читать на страницах столь уважаемого мною форума ![]() PS VBA = Visual Basic for Application; VBScript = Visual Basic Scripting Edition Rascal пишет: Попробуй поставить не Next а метку, которая после отработки перейдёт к след записи. А потом goto и метку перед самой функцией удаления. VBScript не поддерживает меток и оператора Goto (кроме On Error Goto 0) и это одно из самых существенных его отличий от VBA. ![]() |
|
Создано: 15 сентября 2006 12:50 · Личное сообщение · #13 |
![]() |
eXeL@B —› Программирование —› ? VBS "правильное" удаление |
Эта тема закрыта. Ответы больше не принимаются. |