Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


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

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


На WSH:
Скрытый текст
Код: Выделить весь код
Option Explicit

Dim objFSO

Dim objShell
Dim objFolder
Dim objFolderItem

Dim dtDeleteDate


Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

With WScript.CreateObject("Shell.Application")
	Set objFolder = .NameSpace("Shell:RecycleBinFolder")
	
	If Not objFolder Is Nothing Then
		For Each objFolderItem In objFolder.Items
			dtDeleteDate = CDate(Replace(Replace(objFolder.GetDetailsOf(objFolderItem, 2), ChrW(&H200E), ""), ChrW(&H200F), ""))
			
			If DateDiff("d", dtDeleteDate, Now()) > 30 Then
				If objFolderItem.IsFolder And objFolderItem.IsFileSystem And (StrComp(objFolderItem.Type, "Папка с файлами", vbTextCompare) = 0) Then
					objFSO.DeleteFolder objFolderItem.Path, True
				Else
					objFSO.DeleteFile objFolderItem.Path, True
				End If
			End If
		Next
	Else
		WScript.Echo "Can't connect to RecycleBin folder"
		WScript.Quit 1
	End If
End With

Set objFSO = Nothing

WScript.Quit 0

Проверялось на Windows 7 SP1 x64, для других ОС надо смотреть: а) есть ли в Проводнике в Корзине столбец Дата удаления, и под каким номером он числится в данной конкретной ОС, б) что именно и в каком формате возвращает этот столбец (для меня, например, была несколько неожиданной картина, что внутри строки с датой удаления есть некие «разделители»). И соответствующим образом учитывать и обрабатывать в коде.

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

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

Отправлено: 16:43, 05-05-2017 | #4