Войти

Показать полную графическую версию : [решено] Просмотр даты изменения файла и отправка сообщения


SanyaJoker
30-03-2011, 18:24
Доброго времени суток!

Просьба помочь с написанием скрипта который бы проверял дату последнего изменения файла. И в случае если это дата на 25 минут меньше нынешней отправлял сообщение о том что файл не изменялся в течении 25 минут. При этом дата файла динамическая, состоит по принципу KPK30032011.txt - где 30032011 это дата сегодняшнего дня.

Заранее искренно благодарен!

OSArev
30-03-2011, 22:29
Может подойдёт? Попробуй...

strFolder="ПУТЬ_К_ПАПКЕ"
dtCutOff=DateAdd("n", -25, Now)

Set objFSO=CreateObject("Scripting.FileSystemObject")
Set objFolder=objFSO.GetFolder(strFolder)
WScript.Echo "Проверка модифицированных файлов ранее " & dtCutoff & Chr(10) &_
"в папке " & strFolder & "."
Set colFiles=objFolder.Files
For Each file In colFiles
If file.DateLastModified < dtCutoff Then WScript.Echo file.name
Next

SanyaJoker
31-03-2011, 10:29
Спасибо :) Но все гораздо проще нужно проверять один файл с динамическим названием (KPKddmmyyyy.txt - где ddmmyyyy это дата сегодняшнего дня). Принцип задачи в том что бы проверять нормально ли работает авто задача. В случае ее нормально работы последнее изменение файла будет изменятся каждые 15 минут. Если файлик не меняется уже 25 минут значит задача не работает вот в этот момент и вывести сообщение о том что у нас проблемы...

OSArev
31-03-2011, 15:18
Вот так ещё можно.

myDateTime = Right("0" & Day(Date), 2) & Right("0" & Month(Date), 2) & Year(Date)
dtCutOff=DateAdd("n", -25, Now)

File="KPK"&myDateTime&".txt"
filespec="C:\СВОЙ\ПУТЬ\К\ПАПКЕ\"&file
set fso=createobject("scripting.filesystemobject")
set f=fso.GetFile(filespec)
If f.DateLastModified < dtCutoff Then

' Вместо WScript.Echo делай свою задачу.

WScript.Echo "Файл " &f.name& " изменён раньше "&dtCutOff
End if
set f=nothing
set fso=nothing

SanyaJoker
31-03-2011, 16:18
Спасибо то что надо :) Только как так сделать что бы если файл отсутствует он просто промолчал :)

megaloman
31-03-2011, 17:33
Вот еще вариант. Скрипт с заданным дискретом опрашивает файл. Если файл устарел, выдаётся сообщение, однако через заданный дискрет опрос повторяется. Если файла нет, выдаётся сообщение, однако через заданный дискрет опрос повторяется Если это сообщение не нужно - закомментируйте. Пути, префикс файла (у Вас KPK), расширение, дискрет опроса, порог устаревания -укажите свои.Where = "H:\Delete\" ' Где файлы
Pref = "Kuku" ' Префикс файлов
Ext = ".txt" ' Расширение файлов
DMin = 0.5 ' Дискрет опроса Минут
OldMin = 25 ' Порог устаревания файла (минут)

FName = Where + Pref + Mid(CStr(100 + Day(Date)), 2, 2) + Mid(CStr(100 + Month(Date)), 2, 2) + CStr(Year(Date)) + Ext

Set WS = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
L = True


Do While L

Cont = 0
Older = DateAdd("n", -OldMin, Now)

If FSO.FileExists(FName) Then
DN = FSO.GetFile(FName).DateLastModified
If DN < Older Then
Cont = WS.Popup(FName, DMin * 60, "Файл старше " + CStr(OldMin) + " минут", 50)
''''' Else
''''' Cont = WS.Popup(FName, DMin * 60, "Файл изменялся " + CStr(DN), 50)
End If
Else
Cont = WS.Popup(FName, DMin * 60, "Файл не найден.", 50)
End If

If Cont = 3 Then Exit Do

If Not (Cont = 4 Or Cont = -1) Then
WScript.Sleep (DMin * 60 * 1000)
End If

Loop
При ответе на запрос:
"Повторить"= немедленно переопросить файл .
"Пропустить"=повторить опрос через заданный дискрет
"Прервать" = снять скрипт

Сообщение о том, что файл за разрешенный период изменялся, закомментировано (было нужно для отладки), при необходимости, можете восстановить, убрав ''''.

OSArev
31-03-2011, 21:32
если файл отсутствует он просто промолчал »
Подправил.

myDateTime = Right("0" & Day(Date), 2) & Right("0" & Month(Date), 2) & Year(Date)
dtCutOff=DateAdd("n", -25, Now)

File="KPK"&myDateTime&".txt"
filespec="C:\СВОЙ\ПУТЬ\К\ПАПКЕ\"&file

set fso=createobject("scripting.filesystemobject")

If not FSO.FileExists(filespec) Then
msgbox "Файл "&filespec&" осутствует!"

' msgbox - убрать за ненадобностью

WScript.Quit

Else
set f=fso.GetFile(filespec)
If f.DateLastModified < dtCutoff Then

' Вместо WScript.Echo делай свою задачу.

WScript.Echo "Файл " &f.name& " изменён раньше "&dtCutOff
End if
End if
set f=nothing
set fso=nothing

SanyaJoker
01-04-2011, 10:12
Огромное спасибо :) Очень помог!




© OSzone.net 2001-2012