Страница: 1 |
|
Вопрос: нахождение новых файлов
|
Добавлено: 20.05.10 19:31
|
|
Автор вопроса: n0mid | ICQ: 126334
|
Здравствуйте.
У меня проблема.
Есть определенная директория в которой надо проверить есть ли новые файлы (файлы, время создание у которых не более 5 минут назад). Алгоритм довольно таки простой, нужно получить список всех файлов в заданой директории, и проверять дату создания каждого файла и отправлять на почту. последний модуль у меня есть, но первые два никак не могу сделать, так как вообще ниче не понимаю в vb)
заранее спасибо)
Ответить
|
Номер ответа: 1 Автор ответа: Just
Вопросов: 4 Ответов: 330
|
Профиль | | #1
|
Добавлено: 20.05.10 19:50
|
вот скриптик (vbs) для удаление устаревших файлов и создания лога
-
- Option Explicit
- On Error Resume Next
- dim sPath, sTime, lTimeDiff, sExtension, IsDel, AskIfDel
-
-
- IsDel = MsgBox("Удалять устаревшие файлы?" & Chr(13) & Chr(10) & "(в противном случае все устаревшие файлы будут перечислены в логе без удаления)", 4 + 32, "Удаление устаревших файлов...")
- If IsDel = 6 Then AskIfDel = MsgBox("Спрашивать разрешение удалить устаревший файл?", 4 + 32, "Удаление устаревших файлов...")
-
- sPath = InputBox("Путь поиска устаревших файлов" & Chr(13) & Chr(10) & "(в подпапках также будет произведен поиск)", "Удаление устаревших файлов...", "C:\")
- If sPath = "" Then Wscript.quit
-
- sTime = InputBox("Формат поиска разницы" & Chr(13) & Chr(10) & "yyyy — Год" & Chr(13) & Chr(10) & "m — Месяц" & Chr(13) & Chr(10) & "d — День" & Chr(13) & Chr(10) & "h — Часы" & Chr(13) & Chr(10) & "n — Минуты", "Удаление устаревших файлов...", "d")
- If (sTime <> "yyyy") and (sTime <> "m") and (sTime <> "d") and (sTime <> "h") and (sTime <> "n") Then Wscript.quit
-
- lTimeDiff = InputBox("Количество поиска разницы", "Удаление устаревших файлов...", "1")
- If IsNumeric(lTimeDiff) = True Then
- If lTimeDiff < 1 Then Wscript.quit
- Else
- Wscript.quit
- End If
-
- sExtension = InputBox("Искать только определенного расширения файлы?", "Удаление устаревших файлов...", "exe,com,bat,vbs,vbe,wsh,js,dll,inf")
-
-
- WScript.Echo("Поиск устаревших файлов...")
-
-
- FindInFolder (sPath)
- FindInSubFolders (sPath)
- set sPath = nothing
- set sTime = nothing
- set lTimeDiff = nothing
- set sExtension = nothing
- set IsDel = nothing
- set AskIfDel = nothing
- WScript.Echo("Поиск завершен!")
- Wscript.quit
-
-
-
-
-
- Sub FindInSubFolders(folderspec)
- On Error Resume Next
- Dim f, f1, sf, fso
- Set fso = CreateObject("Scripting.FileSystemObject")
- Set f = fso.GetFolder(folderspec)
- Set sf = f.SubFolders
- For Each f1 In sf
- FindInFolder (f1.Path)
- FindInSubFolders (f1.Path)
- Next
- End Sub
-
-
- Sub FindInFolder(folderspec)
- On Error Resume Next
- Dim f, f1, fc, ext, s, fso, i, ExtensionArray, ArrayLine, ArrayCount, DelOrNot
- Set fso = CreateObject("Scripting.FileSystemObject")
- Set f = fso.GetFolder(folderspec)
- Set fc = f.Files
-
- For Each f1 In fc
- ext = fso.GetExtensionName(f1.Path)
- ext = LCase(ext)
- s = LCase(f1.Name)
-
- If sExtension = "" Then
-
- Set f = fso.getfile(wscript.scriptfullname)
- i = DateDiff(sTime, f1.DateCreated, Now)
-
- If i < CLng(lTimeDiff) Then
- Log(f1.path)
- If IsDel = 6 Then
- If AskIfDel = 6 Then
- DelOrNot = MsgBox("Удалить устаревший файл?" & Chr(13) & Chr(10) & f1.path, 4 + 32, "Удаление устаревших файлов...")
- If DelOrNot = 6 Then fso.deletefile(f1.path)
- Else
- fso.deletefile(f1.path)
- End If
- End If
- End If
-
- Else
-
- ExtensionArray = Split(sExtension, ",")
- ArrayLine = UBound(ExtensionArray)
-
- For ArrayCount = 0 to ArrayLine
-
- If (ext = Trim(LCase(ExtensionArray(ArrayCount)))) Then
- Set f = fso.getfile(wscript.scriptfullname)
- i = DateDiff(sTime, f1.DateCreated, Now)
-
- If i < CLng(lTimeDiff) Then
- Log(f1.path)
- If IsDel = 6 Then
- If AskIfDel = 6 Then
- DelOrNot = MsgBox("Удалить устаревший файл?" & Chr(13) & Chr(10) & f1.path, 4 + 32, "Удаление устаревших файлов...")
- If DelOrNot = 6 Then fso.deletefile(f1.path)
- Else
- fso.deletefile(f1.path)
- End If
- End If
- End If
- Exit For
- End If
- Next
-
- End If
-
- Next
- End Sub
-
-
- Function Log(strLineToLog)
- On Error Resume Next
- Const ForReading = 1, ForWriting = 2
- Dim fso, f, r, FileLog
- r = ""
-
- FileLog = Left(WScript.ScriptName,(Len(WScript.ScriptName)-4)) & "_" & DatePart("yyyy",Date) & "_" & DatePart("m",Date) & "_" & DatePart("d",Date) & "." & "log"
- Set fso = CreateObject("Scripting.FileSystemObject")
-
- If (fso.FileExists(FileLog)) Then
- Set f = fso.OpenTextFile(FileLog, Forreading, True)
- r = f.Readall
- f.Close
- Set f = fso.OpenTextFile(FileLog, ForWriting, True)
- f.Write strLineToLog & Chr(13) & Chr(10) & r
- f.Close
- Else
- Set f = fso.OpenTextFile(FileLog, ForWriting, True)
- f.Write strLineToLog
- f.Close
- End If
- End Function
-
-
-
Ответить
|
Страница: 1 |
Поиск по форуму