Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Скрипт удаления папок/подпапок и файлов (http://forum.oszone.net/showthread.php?t=308114)

zhuk09 18-11-2015 16:01 2576179

Скрипт удаления папок/подпапок и файлов
 
Добрый день!
Имеется скрипт удаления папок/подпапок и файлов.
Код:

'Переменные для настройки
NumOfDays = 1 'число дней, все что старше - будет удалено
StartFolderPath = "D:\Work\"  'Путь к папке с которой будет начинаться удаление файлов и папок

'Перехват и обработка ошибок
On Error Resume Next
Dim fso
Dim objFolder
Dim objFile
Dim objSubfolder
Set fso = CreateObject("Scripting.FileSystemObject")

Set objFolder = fso.GetFolder(StartFolderPath)
DeleteOldFilesAndFolders(objFolder)

'Функция рекурсивно удаляет старые файлы и пустые папки из переданной в параметре директории
Function DeleteOldFilesAndFolders(Folder)
 'сначала удаляем все старые файлы в папке старше NumOfDays
 for each objFile in Folder.Files
  if DateDiff("d", objFile.DateLastModified, Now) > NumOfDays Then
  objFile.Delete true
  end if
 next
 'удаляем пустые директории
 for each objSubfolder in Folder.Subfolders
  if objSubfolder.Files.Count = 0 Then
      objSubfolder.Delete true
  end if
'Повторяем для подпапок
for each objSubfolderr in Folder.Subfolders
  DeleteOldFilesAndFolders(objSubfolderr)
 next
next
End Function

Но он работает не очень корректно. Объясняю суть:
Есть папка Work и в ней папки без файлов, подпапки без файлов, и в конечной папке находится файл который не попадает под условие удаления. Но данный скрипт все равно удаляет данные папки без файлов и подпаки без файлов и собственно конечную папку с файлом, который не должен удаляться.
1.Но если в корневую папку Work положить файл, который не удовлетворяет условиям удаления, то этот файл не удаляется, а все остальные удаляются.
2.Если в корневую папку Work положить файл, который не удовлетворяет условиям удаления, в папку первого уровня (111) так же положить файл не удовлетворяющий условиям удаления, а в папку второго уровня (222) положить файл удовлетворяющий условиям удаления (333), то удаляется только файл 333, а папка 222 не удаляется. И само собой не удаляется папка 111, т.к там находится файл, который не попадает под условия удаления.

Помогите доработать данный скрипт!
За ранее спасибо!

zhuk09 19-11-2015 12:58 2576459

Уважаемые Гуру VBA, очень нужна помощь в данном вопросе!

zhuk09 23-11-2015 14:37 2578087

С этим скриптом пока не как не получается, до сих пор жду Гуру)!

zhuk09 27-11-2015 18:14 2579424

Уважаемые, может кто из Гуру все таки посмотрит на этот код и поправит его?!
Очень надо....)

zhuk09 07-12-2015 12:41 2582333

Вообщем грусть печаль)))) ни кто не помог!


Время: 11:06.

Время: 11:06.
© OSzone.net 2001-