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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Очистка корзины пользователей.

Ответить
Настройки темы
Любой язык - Очистка корзины пользователей.

Новый участник


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

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


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

Отправлено: 14:03, 05-05-2017

 

Ветеран


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

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


PowerShell:
Код: Выделить весь код
(New-Object -Com Shell.Application).NameSpace(10).Items() | ? {$_.ModifyDate -lt (Get-Date).AddDays(-30) -and $_.IsFolder -eq $false} | % { Remove-Item -LiteralPath $_.Path -Force}
VBScript адаптировать скрипт - Empty Recycle Bin Script

Отправлено: 15:06, 05-05-2017 | #2



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

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


Новый участник


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

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


Прошу прошения, неверно сформулировал, нужно чтобы скрипт удалял файлы перемещённые в корзину более 30 дней назад.

Отправлено: 15:32, 05-05-2017 | #3


Ветеран


Сообщения: 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


Ветеран


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

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


На PowerShell:
Код: Выделить весь код
(New-Object -ComObject Shell.Application).NameSpace('Shell:RecycleBinFolder').Items() | Where-Object -FilterScript {
    ([System.DateTime]::Parse($oFolder.GetDetailsOf($_, 2).Replace(([System.Char]0x200E).ToString(), '').Replace(([System.Char]0x200F).ToString(), ''), [System.Globalization.CultureInfo]::CurrentCulture)).AddDays(30) -le (Get-Date)
} | ForEach-Object -Process {
    Remove-Item -LiteralPath $_.Path -Force
}
Замечания ровно те же.
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:04, 05-05-2017 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Очистка корзины пользователей.

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Очистка папки %temp% у всех пользователей в системе. noxville Скриптовые языки администрирования Windows 16 18-08-2020 06:47
2008 R2 - Очистка корзины и папки Загрузки через АД Almest Windows Server 2008/2008 R2 6 08-06-2014 12:16
CMD/BAT - [решено] Очистка home каталогов пользователей. alexisgreen Скриптовые языки администрирования Windows 2 28-06-2013 15:22
Система - Контроль Корзины Joyman Программное обеспечение Windows 2 23-12-2009 17:24
Очистка темпов и корзины у Юзверей?! a l e x u s Microsoft Windows NT/2000/2003 2 09-06-2008 13:33




 
Переход