You can launch the following VBScript through the application scheduler (e.g. every 1 minute) to be notified when a file has not been updated in X seconds.
Note: The file needs to be saved with the .vbs extension and called it through cscript.exe.
You can set the filename with the FILE_TO_CHECK variable, and the longest acceptable time the file may remain unchanged with the MAX_AGE_IN_SECONDS variable.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
' Checks when a file was last modified, useful if you need to ensure that a file ' (e.g. log file) is being updated and is not stale ' ' Returns 0 if the file was modified recently, and 1 if the file was not recently ' modified. Check return code through %ERRORLEVEL%. Option Explicit '***************************************************************************** '* DEFINE CONSTANTS '***************************************************************************** Const FILE_TO_CHECK = "C:\batch\test.txt" Const MAX_AGE_IN_SECONDS = 180 '***************************************************************************** '* DECLARE VARIABLES '***************************************************************************** Dim objShell, objExecObject Dim FSO,File Dim Date1,Date2,Hour1,Hour2,FileAge '***************************************************************************** '* Set environment and open output file '***************************************************************************** Set objShell = WScript.CreateObject("WScript.Shell") set FSO = CreateObject("Scripting.FileSystemObject") Set File = FSO.GetFile(FILE_TO_CHECK) Date1 = Now() Date2 = File.DateLastModified FileAge = DateDiff("s", Date2, Date1) If FileAge > MAX_AGE_IN_SECONDS Then WScript.echo "File", FILE_TO_CHECK, "was modified more than", MAX_AGE_IN_SECONDS, "seconds ago, it was modified", FileAge, "seconds ago." WScript.Quit(1) Else WScript.echo "File", FILE_TO_CHECK, "was modified", FileAge, "seconds ago." WScript.Quit(0) End if |