Показать полную графическую версию : [решено] Просмотр даты изменения файла и отправка сообщения
SanyaJoker
30-03-2011, 18:24
Доброго времени суток!
Просьба помочь с написанием скрипта который бы проверял дату последнего изменения файла. И в случае если это дата на 25 минут меньше нынешней отправлял сообщение о том что файл не изменялся в течении 25 минут. При этом дата файла динамическая, состоит по принципу KPK30032011.txt - где 30032011 это дата сегодняшнего дня.
Заранее искренно благодарен!
Может подойдёт? Попробуй...
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 минут значит задача не работает вот в этот момент и вывести сообщение о том что у нас проблемы...
Вот так ещё можно.
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
При ответе на запрос:
"Повторить"= немедленно переопросить файл .
"Пропустить"=повторить опрос через заданный дискрет
"Прервать" = снять скрипт
Сообщение о том, что файл за разрешенный период изменялся, закомментировано (было нужно для отладки), при необходимости, можете восстановить, убрав ''''.
если файл отсутствует он просто промолчал »
Подправил.
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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.