View previous topic :: View next topic |
Author |
Message |
AAA_Konstantin
Joined: 20 Sep 2008 Posts: 2
|
(Separately) Posted: Sat Sep 20, 2008 19:39 Post subject: нужен скрипт на удаление файлов |
|
|
Вообщем расклад такой , есть папочка , куда запихиваются архивы смс сообщений (При этом имена файлов фигурируются с бух ты барахты , и никак это поменять не удастся - программа такая) в мою задачу входит переодическая чистка этого хлама , при этом мне можно удалать файлики только месячной давности ( т.е. строго 30ти дневные) .
Вопрос : какой скрипт или программу вы посоветуете для облегчение моей и без того не лёгкой работы ?
P.S. на работе стоит Total Commander !
! | Моторокер: | Форум Советы – для советов, а не для вопросов.
Перенесено. | |
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Sat Sep 20, 2008 20:34 Post subject: |
|
|
Хватит и Total Commander.
Alt+F7 > Дополнительно
[галка] Дата между [пусто] и [месяц назад] |
|
Back to top |
|
|
AAA_Konstantin
Joined: 20 Sep 2008 Posts: 2
|
(Separately) Posted: Sun Sep 21, 2008 23:47 Post subject: |
|
|
Tol!k wrote: | Хватит и Total Commander.
Alt+F7 > Дополнительно
[галка] Дата между [пусто] и [месяц назад] |
Так , а как эту ерунду поставить , да так , что бы оно само делалось ? По факту и я могу найти эти файлы и удалить их через обычный Explorer ! Нужно что бы это делалось само , так что бы я совсем не принимал в этом участие ! |
|
Back to top |
|
|
D1P
Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
(Separately) Posted: Mon Sep 22, 2008 07:32 Post subject: |
|
|
Самая простая идея: vbs-скрипт+любой планировщик заданий (справится даже встроенный в Windows).
Правда к TC это уже имеет весьма косвенное отношение. _________________ База знаний о Total Commander
Блог |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2220 Location: Москва, Россия
|
(Separately) Posted: Mon Sep 22, 2008 14:48 Post subject: |
|
|
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 |
|
|
|
|
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
|