нужен скрипт на удаление файлов
Select messages from
# through # FAQ
[/[Print]\]

Total Commander -> Автоматизация Total Commander

#1: нужен скрипт на удаление файлов Author: AAA_Konstantin PostPosted: Sat Sep 20, 2008 19:39
    —
Вообщем расклад такой , есть папочка , куда запихиваются архивы смс сообщений (При этом имена файлов фигурируются с бух ты барахты , и никак это поменять не удастся - программа такая) в мою задачу входит переодическая чистка этого хлама , при этом мне можно удалать файлики только месячной давности ( т.е. строго 30ти дневные) .

Вопрос : какой скрипт или программу вы посоветуете для облегчение моей и без того не лёгкой работы ?

P.S. на работе стоит Total Commander !

 !  Моторокер:
Форум Советы – для советов, а не для вопросов.
Перенесено.

#2:  Author: Tol!kLocation: Арзамас PostPosted: Sat Sep 20, 2008 20:34
    —
Хватит и Total Commander.

Alt+F7 > Дополнительно
[галка] Дата между [пусто] и [месяц назад]

#3:  Author: AAA_Konstantin PostPosted: Sun Sep 21, 2008 23:47
    —
Tol!k wrote:
Хватит и Total Commander.

Alt+F7 > Дополнительно
[галка] Дата между [пусто] и [месяц назад]


Так , а как эту ерунду поставить , да так , что бы оно само делалось ? По факту и я могу найти эти файлы и удалить их через обычный Explorer ! Нужно что бы это делалось само , так что бы я совсем не принимал в этом участие !

#4:  Author: D1PLocation: Тбилиси PostPosted: Mon Sep 22, 2008 07:32
    —
Самая простая идея: vbs-скрипт+любой планировщик заданий (справится даже встроенный в Windows).
Правда к TC это уже имеет весьма косвенное отношение.

#5:  Author: BatyaLocation: Москва, Россия PostPosted: Mon Sep 22, 2008 14:48
    —
D1P wrote:
Правда к TC это уже имеет весьма косвенное отношение.

Действительно, лучше перенести в другую ветку.

AAA_Konstantin
А вот и vbs-скрипт:
Code:
'======================================================================
' Удаление в указанной папке файлов с N-дневным сроком,
'   где N-число, которое можно задать вторым параметром
'   или через константу cTerm в скрипте.
' Также можно определить признак сканирования вложенных папок
'   с помощью третьего параметра (0\1) или константы
'   cRecursion (False\True).
' Если в качестве первого параметра указан файл, то он
'   рассматривается, как файл-список папок для обработки.
'
' Параметры вызова:
' {папка} [{срок} [{признак сканирования вложеннных папок}]]
' {файл-список} [{срок} [{признак сканирования вложеннных папок}]]
'
' Скрипт можно применять к текущей (под курсором) папке в TC:
' %P%N [{срок} [{признак сканирования вложеннных папок}]]
' Скрипт можно применять к выделенным папкам в TC:
' %L [{срок} [{признак сканирования вложеннных папок}]]
'======================================================================

Option Explicit
'======== Изменяемые параметры ========================================
Const cTerm      = 30    'Срок файлов в днях
Const cRecursion = True  'Признак сканирования вложенных папок
'======================================================================

Dim Term, Recursion, Mess, FSO, FF, ListFlag, F, Errors

SetMess
Set FSO     = CreateObject("Scripting.FileSystemObject")
Set Errors  = CreateObject("Scripting.Dictionary")
CheckParam

If ListFlag Then
  For Each F In Split(FSO.OpenTextFile(FF).ReadAll, vbNewLine)
    Main F
  Next
Else
  Main FF
End If

If Errors.Count > 0 Then
  MessBox JoinErr(Errors), 2
Else
  MessBox Mess(7), 3
End If
Quit

Sub Main(pF)
  Dim oF, lF
  If Not FSO.FolderExists(pF) Then
    Errors.Add pF, pF & " - " & Mess(5)
    Exit Sub
  End If
  Set oF = FSO.GetFolder(pF)
  For Each lF In oF.Files
    On Error Resume Next
    If (Int(Date - lF.DateLastModified) + 1) = Term Then
      FSO.DeleteFile lF, True
    End If
    If Err.Number > 0 Then
      If Not Errors.Exists(lF) Then
        Errors.Add lF, lF & " - " & Mess(6) & Err.Description
      End If
    End If
    On Error GoTo 0
  Next
  If Recursion Then
    For Each lF In oF.SubFolders
      Main lF
    Next
  End If
  Set oF = Nothing
  Set lF = Nothing
End Sub

Sub CheckParam
  If WScript.Arguments.Count = 0 Then
    MessBox Mess(1), 1
    Quit
  End If
  FF = WScript.Arguments(0)
  ListFlag = FSO.FileExists(FF)
  If (Not ListFlag) And (Not FSO.FolderExists(FF)) Then
    MessBox Mess(2), 1
    Quit
  End If
  If WScript.Arguments.Count > 1 Then
    Term = WScript.Arguments(1)
    If Term = "" Then
      Term = cTerm
    Else
      If Not IsNumeric(Term) Then
        MessBox Mess(3), 1
        Quit
      End If
      Term = CInt(Term)
    End If
  Else
    Term = cTerm
  End If
  If WScript.Arguments.Count > 2 Then
    Recursion = WScript.Arguments(2)
    If Not ((Recursion = 0) Or (Recursion = 1)) Then
      MessBox Mess(4), 1
      Quit
    End If
    Recursion = (Recursion = 1)
  Else
    Recursion = cRecursion
  End If
End Sub

Sub SetMess
  Set Mess = CreateObject("Scripting.Dictionary")
  Mess.Add 0,  "Удаление файлов по сроку"
  Mess.Add 1,  "Не указаны параметры!"
  Mess.Add 2,  "Первый параметр не является папкой или файлом-списком!"
  Mess.Add 3,  "Второй параметр не является числом!"
  Mess.Add 4,  "Третий параметр должен принимать значения 0 или 1!"
  Mess.Add 5,  "Не является папкой!"
  Mess.Add 6,  "Не удалось выполнить удаление: "
  Mess.Add 7,  "Операция завершена."
  Mess.Add 8,  "Операция завершена с ошибками." & vbNewLine
End Sub

Function JoinErr(pDic)
  Dim lKey
  For Each lKey In pDic
    JoinErr = JoinErr & vbNewLine & vbNewLine & pDic(lKey)
  Next
  JoinErr = Mess(8) & JoinErr
End Function

Function MessBox(pMess, pMode)
  Dim lIcon
  Select Case pMode
    Case 1 lIcon = vbCritical    + vbOKOnly
    Case 2 lIcon = vbExclamation + vbOKOnly
    Case 3 lIcon = vbInformation + vbOKOnly
  End Select
  MessBox = MsgBox(pMess, lIcon, Mess(0))
End Function

Sub Quit
  Set Errors = Nothing
  Set Mess   = Nothing
  Set FSO    = Nothing
  Wscript.Quit
End Sub

Можно использовать как вручную (в том числе из TC), так и через планировщик.



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Page 1 of 1

Powered by phpBB © 2001, 2005 phpBB Group