Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

нужен скрипт на удаление файлов

 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
AAA_Konstantin



Joined: 20 Sep 2008
Posts: 2

Post (Separately) Posted: Sat Sep 20, 2008 19:39    Post subject: нужен скрипт на удаление файлов Reply with quote

Вообщем расклад такой , есть папочка , куда запихиваются архивы смс сообщений (При этом имена файлов фигурируются с бух ты барахты , и никак это поменять не удастся - программа такая) в мою задачу входит переодическая чистка этого хлама , при этом мне можно удалать файлики только месячной давности ( т.е. строго 30ти дневные) .

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

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

 !  Моторокер:
Форум Советы – для советов, а не для вопросов.
Перенесено.
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Sat Sep 20, 2008 20:34    Post subject: Reply with quote

Хватит и Total Commander.

Alt+F7 > Дополнительно
[галка] Дата между [пусто] и [месяц назад]
Back to top
View user's profile Send private message
AAA_Konstantin



Joined: 20 Sep 2008
Posts: 2

Post (Separately) Posted: Sun Sep 21, 2008 23:47    Post subject: Reply with quote

Tol!k wrote:
Хватит и Total Commander.

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


Так , а как эту ерунду поставить , да так , что бы оно само делалось ? По факту и я могу найти эти файлы и удалить их через обычный Explorer ! Нужно что бы это делалось само , так что бы я совсем не принимал в этом участие !
Back to top
View user's profile Send private message
D1P



Joined: 20 Dec 2004
Posts: 2973
Location: Тбилиси

Post (Separately) Posted: Mon Sep 22, 2008 07:32    Post subject: Reply with quote

Самая простая идея: vbs-скрипт+любой планировщик заданий (справится даже встроенный в Windows).
Правда к TC это уже имеет весьма косвенное отношение.
_________________
База знаний о Total Commander
Блог
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Mon Sep 22, 2008 14:48    Post subject: Reply with quote

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), так и через планировщик.
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group