VBScript не может удалить папку - PullRequest
2 голосов
/ 27 января 2011

У меня есть программа VBScript, которая создает папку во временной папке пользователя:

set fso = CreateObject("scripting.FileSystemObject")
temp = fso.GetSpecialFolder(2)
dropzone = temp & "\{d450c76c-2ad8-4f73-af8a-ccc5ba28036a}\"

If Not fso.FolderExists(dropzone) Then 
    set NewFolder = fso.CreateFolder(dropzone)
End If
set NewFolder = Nothing

В конце программы я хочу удалить эту папку.Я пробовал это, но это дает мне ошибку отказа в разрешении:

set deletefolder = fso.GetFolder(dropzone)
deletefolder.Delete(True) 
set fso = Nothing

Ответы [ 6 ]

2 голосов
/ 29 сентября 2012
  • Нет, не проблема с синхронизацией
  • Нет, не проблема с удалением
  • Нет, не проблема, решаемая MsgBox
  • Нет, не проблемапроблема с атрибутами
  • Нет, не проблема с текущим путем к каталогу
  • Нет, невозможно использовать Kill
  • Нет, доступ запрещен
  • Нет, вам не нужно выкладывать
  • Нет, документация MSDN не скажет вам

ВЫ ТОЛЬКО ДОЛЖНЫ УДАЛИТЬ ТРЕЙЛИНГ-БЕЛОК В ПУТИ, ПОТОМУ ЧТО УДАЛИТЬ УДАЛИТЕЛЬЭТО.

Теперь не стесняйтесь стрелять в мессенджера ...

2 голосов
/ 27 января 2011

@ giodamelio Как ни странно, я поставил строку msgBox dropzone перед вашим кодом, и это сработало. Когда я закомментирую msgbox, это не сработает?

  • Ваш код или компьютер слишком быстрый! : D
  • Скорее всего, вы не удаляете / не закрываете файлы, которые используете или храните в этой папке (или неправильно закрыли)
1 голос
/ 27 января 2011

Проверьте атрибуты файла и установите 0, если он еще не установлен.

set deletefolder = fso.GetFolder(dropzone)
if deletefolder.Attributes=0 then
 deletefolder.Delete(True)
else
 deletefolder.Attributes=0
 deletefolder.Delete(True)
end if
set fso = Nothing
1 голос
/ 27 января 2011

Это очень, очень вероятно, не фактический "доступ запрещен". Скорее всего, это «невозможно удалить, пока файлы открыты». Закройте все открытые ссылки на эту папку (текстовые потоки, процессы, которые вы могли запустить, посмотрите внимательно) и выполните

fso.DeleteFolder(dropzone)

См. документацию MSDN по DeleteFolder().

0 голосов
/ 22 мая 2012

, чтобы DeleteFolder работал, текущий каталог для скрипта не должен быть частью пути к папке, которую нужно удалить.Используйте Shell.CurrentDirectory, чтобы изменить текущий каталог на какой-либо системный путь, а затем вызовите DeleteFolder.Я проверил, что это работает.Отметьте this.

0 голосов
/ 27 января 2011

попробуйте использовать Kill ( "путь к папке" )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...