Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Просмотр даты изменения файла и отправка сообщения (http://forum.oszone.net/showthread.php?t=203477)

SanyaJoker 30-03-2011 18:24 1647363

Просмотр даты изменения файла и отправка сообщения
 
Доброго времени суток!

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

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

OSArev 30-03-2011 22:29 1647517

Может подойдёт? Попробуй...
Код:

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 1647791

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

OSArev 31-03-2011 15:18 1648097

Вот так ещё можно.
Код:

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 1648157

Спасибо то что надо :) Только как так сделать что бы если файл отсутствует он просто промолчал :)

megaloman 31-03-2011 17:33 1648218

Вот еще вариант. Скрипт с заданным дискретом опрашивает файл. Если файл устарел, выдаётся сообщение, однако через заданный дискрет опрос повторяется. Если файла нет, выдаётся сообщение, однако через заданный дискрет опрос повторяется Если это сообщение не нужно - закомментируйте. Пути, префикс файла (у Вас 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 1648387

Цитата:

Цитата SanyaJoker
если файл отсутствует он просто промолчал »

Подправил.
Код:

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 1648646

Огромное спасибо :) Очень помог!


Время: 17:45.

Время: 17:45.
© OSzone.net 2001-