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

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

DOCznet 26-09-2012 16:40 1995166

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

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

нашел вот это (ну собсно первая сссылка в поисковике):

http://pokatashkin.com/archives/40

Годны, быстрый, короткий скрипт, но отсчет он ведет по дате последнего изменения. Не владею VBS и банальная замена file.datelastmodified на file.datecreated оказалась безрезультатной.

При использовании forfiles.exe отсчет так же идет от штампа изменения.

Так же предложили мне такой вариант на PS:

[code]# удаляем файлы старше трех месяцев
$date = (Get-Date).AddMonths(-3)


Get-ChildItem -Path D:\DA | where {!$_.PSIsContainer} |
foreach {
if ($_.LastWriteTime -lt $date) {
# в тестовых целях указываем -whatif
# когда убедимся что все корректно работает то убираем его
#Remove-Item $_
}
}[code]

И что-то он не захотел работать, ошибок не выдает так же.

Kazun 26-09-2012 16:50 1995170

Код:

$date = (Get-Date).AddMonths(-3)
Get-ChildItem -Path D:\DA -Rec -Force | Where {!$_.PSIsContainer -and $_.CreationTime -lt $date} | Remove-Item -WhatIf

И в случае успеха убрать -WhatIf.

Dr.DG 27-09-2012 11:42 1995513

Вот на VBS без рекурсии
Код:

Option Explicit
 
Dim fso
Dim objFolder
Dim strFolder
Dim objFiles
Dim objFile
Dim datDate

On Error Resume Next

'initialize parameters
strFolder = "D:\Folder"
datDate = Now - 7 'one week ago

'set object variables
Set fso = CreateObject("Scripting.FileSystemObject")
Set objFolder = fso.GetFolder(strFolder)
Set objFiles = objFolder.Files

'loop through members of collection
For Each objFile in objFiles
    'do something with file
    Call DeleteOldFile(objFile, datDate)
Next

WScript.Quit Err.Number

Function DeleteOldFile(objFile, datDate)

    'function deletes file which was created date specified and earlier

    If objFile.DateCreated <= datDate Then
        'WScript.Echo objFile.Name & " " & objFile.DateCreated
        objFile.Delete
    End If

End Function



Время: 19:09.

Время: 19:09.
© OSzone.net 2001-