|
Удалить непустую директорию
|
|||
---|---|---|---|
#18+
Добрый день! Пытаясь удалить непустую папку размером 0 байт, да и вообще, с любым размером RMDIR даёт ошибку доступа. Помогите, пожалуйста, решить проблему. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 12:53 |
|
Удалить непустую директорию
|
|||
---|---|---|---|
#18+
valery500Пытаясь удалить непустую папкунепустую папку нельзя удалить. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 13:02 |
|
Удалить непустую директорию
|
|||
---|---|---|---|
#18+
valery500, Из справки RmDir: An error occurs if you try to use RmDir on a directory or folder containing files. Use the Kill statement to delete all files before attempting to remove a directory or folder. Возможно Вам пригодится такой метод: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 22:23 |
|
Удалить непустую директорию
|
|||
---|---|---|---|
#18+
valery500, Лично я в этом вопросе ни в API ни в рекурсии не лез: Код: vbnet 1.
Набери в командной строке rd /? Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2014, 00:45 |
|
Удалить непустую директорию
|
|||
---|---|---|---|
#18+
Дмитрий77, Возможно, подход с использованием функции Shell не всегда целесообразен. Например, в этом случае папка удалена не будет и результат будет неизвестен: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2014, 23:27 |
|
Удалить непустую директорию
|
|||
---|---|---|---|
#18+
iMrTidy, >Set wrd = >Set doc = А word с открытым файлом кто за вас закрывать будет? Что-то у вас там не так. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2014, 23:52 |
|
Удалить непустую директорию
|
|||
---|---|---|---|
#18+
Дмитрий77, Word я не закрываю намеренно, чтобы продемонстрировать наглядно результат, в случае, если в удаляемой папке будет находиться открытый файл. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2014, 01:14 |
|
Удалить непустую директорию
|
|||
---|---|---|---|
#18+
iMrTidy, Ты умничаешь? Нельзя удалить файл который используется кем-то в данный момент. И соответственно папку его содержащую тоже. Ни ручками, ни программно. Вот тебе кстати пример как я с этим буквально напоролся. 16146341 И кстати там же найдешь мою культурную функцию ShellDeleteFileFolder (под спойлером), которая удаляет папку с файлами, при этом не использует VB-шный Shell и cmd, а использует API SHFileOperation function Таки сделал я это через API, просто с ходу не вспомнил. Твой fso.DeleteFolder очевидно делает то же самое и через ту же API, просто я "с детства" и со времен Win98 недолюбливаю "Scripting.FileSystemObject" и принципиально не использую. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2014, 06:32 |
|
Удалить непустую директорию
|
|||
---|---|---|---|
#18+
>папка удалена не будет и результат будет неизвестен Тогда моя ShellDeleteFileFolder вернет false. И, кстати, если ты раскомментируешь в моей ф-ции строчку Код: vbnet 1. 2.
то он тебе распечатает ошибку, почему не удалось удалить папку. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2014, 06:41 |
|
Удалить непустую директорию
|
|||
---|---|---|---|
#18+
iMrTidy...чтобы продемонстрировать наглядно результат, в случае, если в удаляемой папке будет находиться открытый файл. Ну по сути вы то же что и я написали. Другое дело, что от того что вы узнаете почему не удалилось, вам как правило легче не станет. Поэтому лично я предпочитаю не перегружать код обработкой ошибок (часто бесполезной), а заранее в коде предопределять условия при которых такой ситуации не произойдет, а потом удалять без проверок. Автору топика я бы посоветовал попробовать удалить ручками и выяснить почему не удаляется, а потом уже чего-то программировать. М.б. файл где-то открыт, м.б. нет прав доступа. М.б. вообще битый кластер на жестком диске (тогда скандиск) -я с такой ситуацией сталкивался. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2014, 07:47 |
|
Удалить непустую директорию
|
|||
---|---|---|---|
#18+
valery500даёт ошибку доступа Если у текущего пользователя нет прав на удаление папки, то тебе грубо надо: 1) Запустить прогу с правами администратора 2) Проверить есть ли у администратора права на удаление, если есть то удалить папку 3) Если прав нет, то проверить, является ли администратор владельцем папки, если да, то дать ему право на удаление и удалить папку 4) Если не является владельцем, то сменить владельца на администратора, дать администратору права на удаление и удалить Ты хотя б на уровне "ручками" с этим разберись. Коды которые все это делают программно на VB6 у меня конечно есть, но тратить время на выкладывание их считаю бессмысленным так как вряд ли осилишь. Их куски есть если пошерстишь поиском по моим топикам. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2014, 09:34 |
|
|
start [/forum/topic.php?fid=60&fpage=38&tid=2156191]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 150ms |
0 / 0 |