Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Удаление старых файлов и папок

Ответить
Настройки темы
VBS/WSH/JS - [решено] Удаление старых файлов и папок

Старожил


Сообщения: 225
Благодарности: 1

Профиль | Сайт | Отправить PM | Цитировать


Добрый день, есть очень клевый скрипт для удаление старых файлов
читать дальше »
Код: Выделить весь код
path = "D:\BackUp"
killdate = date() - 30

arFiles = Array()
set fso = createobject("scripting.filesystemobject")

SelectFiles path, killdate, arFiles, true

nDeleted = 0
for n = 0 to ubound(arFiles)
  on error resume next
  arFiles(n).delete true
  if err.number <> 0 then
    wscript.echo "Не возможно удалить: " & arFiles(n).path
  else
    nDeleted = nDeleted + 1
  end if
  on error goto 0
next

msgbox nDeleted & " из " & ubound(arFiles)+1 _
  & " файлы были удалены с папки D:\BackUp"


sub SelectFiles(sPath,vKillDate,arFilesToKill,bIncludeSubFolders)
  on error resume next
  set folder = fso.getfolder(sPath)
  set files = folder.files

  for each file in files
    dtlastmodified = null
    on error resume Next
    dtlastmodified = file.datelastmodified
    on error goto 0
    if not isnull(dtlastmodified) Then
      if dtlastmodified < vKillDate then
        count = ubound(arFilesToKill) + 1
        redim preserve arFilesToKill(count)
        set arFilesToKill(count) = file
      end if
    end if
  next

  if bIncludeSubFolders then
    for each fldr in folder.subfolders
      SelectFiles fldr.path,vKillDate,arFilesToKill,true
    next
  end if
end sub

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

Помогите, будьте добры строчкой...

Отправлено: 09:48, 05-06-2014

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Ua-life:
очень клевый скрипт »
Я бы не сказал.

Цитата Ua-life:
а я бы очень хотел, что бы он удалял и папки созданные ранее указанного периода. »
…вместе со свежими файлами .

P.S. И почему «созданными»? В скрипте используется дата последней модификации «.DateLastModified» (что есть более правильно)?!

Отправлено: 10:16, 05-06-2014 | #2



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

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


Старожил


Сообщения: 225
Благодарности: 1

Профиль | Сайт | Отправить PM | Цитировать


Цитата Iska:
P.S. И почему «созданными»? В скрипте используется дата последней модификации «.DateLastModified» (что есть более правильно)?! »
возможно не правильно выразился, не очень владею могучим.
Сейчас удаляет файлы созданные 30 дней назад, но папки в которых находились файлы созданные 30 дней назад не удаляет, вот мне нужно, что бы и папки удалялись

Я же прошу не критиковать то, что написано в скрипте, автор не я, а всего лишь прошу помочь достичь желаемого результата ))

Отправлено: 10:24, 05-06-2014 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Ua-life:
Сейчас удаляет файлы созданные 30 дней назад, но папки в которых находились файлы созданные 30 дней назад не удаляет, вот мне нужно, что бы и папки удалялись »
Не нужно. Удалять потребно лишь пустые папки.

Цитата Ua-life:
Я же прошу не критиковать то, что написано в скрипте, автор не я, а всего лишь прошу помочь достичь желаемого результата )) »
Для очистки я много лет как пользую свой. В Вашем варианте может выглядеть примерно так (не проверялось):
читать дальше »
Код: Выделить весь код
Option Explicit

Const intDays2Live   = 30
Const strPathToClear = "D:\BackUp"


With WScript.CreateObject("Scripting.FileSystemObject")
	If .FolderExists(strPathToClear) Then
		ClearSubFolders .GetFolder(strPathToClear)
	Else
		WScript.Quit 1
	End If
End With

WScript.Quit 0
'=============================================================================

'=============================================================================
Sub ClearSubFolders(objFolder)
	Dim objSubFolder
	Dim objFile
	
	
	For Each objSubFolder In objFolder.SubFolders
		ClearSubFolders objSubFolder
	Next
	
	For Each objFile In objFolder.Files
		If DateDiff("d", objFile.DateLastModified, Now()) > intDays2Live Then
			objFile.Delete(True)
		End If
	Next
	
	If (objFolder.Files.Count = 0) And (objFolder.SubFolders.Count = 0) Then
		If objFolder.Path = strPathToClear Then
			' Nothing to do
		Else
			objFolder.Delete True
		End If
	End If
End Sub
'=============================================================================

Последний раз редактировалось Iska, 05-06-2014 в 16:33.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:50, 05-06-2014 | #4


Старожил


Сообщения: 225
Благодарности: 1

Профиль | Сайт | Отправить PM | Цитировать


к сожалению пишет что мол objFSO переменная не определена

Отправлено: 15:59, 05-06-2014 | #5


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Подправил код в предыдущем посте.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:34, 05-06-2014 | #6


Старожил


Сообщения: 225
Благодарности: 1

Профиль | Сайт | Отправить PM | Цитировать


Цитата Ua-life:
к сожалению пишет что мол objFSO переменная не определена »
мастер, что тут сказать, все работает, задача решена, прибольшое спасибо за потраченное на меня время. Закрывайте тему.

Отправлено: 16:45, 05-06-2014 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Удаление старых файлов и папок

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Удаление старых файлов/папок если их кол-во больше n greenOwl Скриптовые языки администрирования Windows 35 14-01-2023 08:34
CMD/BAT - удаление старых папок при заполнении диска pazzl7 Скриптовые языки администрирования Windows 2 11-09-2013 20:24
CMD/BAT - [решено] Удаление старых папок при превышении кол-ва n greenOwl Скриптовые языки администрирования Windows 2 11-07-2013 14:07
CMD/BAT - [решено] Удаление старых бэкап файлов Starter1 Скриптовые языки администрирования Windows 4 12-06-2012 15:36
CMD/BAT - Удаление старых файлов по имени файлов Bиктор Скриптовые языки администрирования Windows 1 19-04-2010 03:37




 
Переход