Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

VBScript that can detect when file(s) to a DIR have been deleted, modified or added.

Posted on 2010-11-09
7
Medium Priority
?
458 Views
Last Modified: 2012-05-10
Hello,

I have been using a vbScript that would create a file which would include the filenames of  any files added to the Directory specified in the vbScript from there last time the vbScript was run . This has been working great but I am now in need of this file (value specified in strReport ) to include the filenames of those files that have:

a) been added to the directory
b) been deleted from the directory
c) been modified in that directory (want to track users that open files and change values in said file and save)

I have the vbScript below. Any thoughts or suggestions would be greatly appreciated.

Thank You

Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
 
strFolder = "c:\folder_to_monitor"
strList = "all_current_files.txt"
strReport = "new_files_added_report.txt"
 
Set objOldFiles = CreateObject("Scripting.Dictionary")
objOldFiles.CompareMode = VbTextCompare
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
 
If objFSO.FileExists(strReport) Then
    objFSO.DeleteFile strReport, True
End If
 
If objFSO.FileExists(strList) Then
    Set objList = objFSO.OpenTextFile(strList, ForReading)
    
    Do Until objList.AtEndOfStream
        arrLine = Split(objList.ReadLine, vbTab)
        objOldFiles.Add arrLine(0), arrLine(1)
    Loop
    
    objList.Close
End If
 
Set objList = objFSO.OpenTextFile(strList, ForWriting, True)
Set objFolder = objFSO.GetFolder(strFolder)
 
For Each objFile In objFolder.Files
    strName = objFile.Name
    dtmCreated = objFile.DateCreated
    objList.WriteLine strName & vbTab & dtmCreated
    
    If Not objOldFiles.Exists(strName) Then
        Set objReport = objFSO.OpenTextFile(strReport, ForAppending, True)
        objReport.WriteLine strName & vbTab & dtmCreated
        objReport.Close
    End If
Next

Open in new window

0
Comment
Question by:Charlie_Melega
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 2
7 Comments
 

Author Comment

by:Charlie_Melega
ID: 34098299
To further clarify on this, the primary objective of this vbScript should be to determine if: 1) File has been opened 2) File contents have been changed, line added / removed 3) File has been saved

Thanks for suggestions
0
 
LVL 42

Expert Comment

by:sedgwick
ID: 34101337
the script you have posted indeed log the file that were added to the directory but not since the last run of the script but from the first run of the script.
which means that if no new files were added to the directory, all_current_files.txt still logs them.
0
 
LVL 42

Expert Comment

by:sedgwick
ID: 34101415
tell me of the following meet your requirement:
each time you run the script the log file will be appended with a section which states:


•      time of running the script
•      added files
•      modified  files + DateLastModified
•      accessed files (but not modified) + DateLastAccessed
•      deleted files
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:Charlie_Melega
ID: 34102506
Hello Sedgewick,

Yes, the requirements that you state above are exactly what is needed. However, a NEW log file is created  if and only if one of these conditions has occurred since the last time the script was run.  I do  not want to append an existing file as this will not allow me to identify unique activity since the last run of the script. I have another 3rd party tool that I will be using so the output of the log file will only include the activity you referenced above, in the log file. If no activity has occurred from the last time the script was run, then no log file would be produced or simply an empty log file.

Thanks for your help!!
0
 

Author Comment

by:Charlie_Melega
ID: 34112825
I guess this may not be possible?
0
 
LVL 65

Accepted Solution

by:
RobSampson earned 2000 total points
ID: 34150203
Hi, was this question answered here:
http://www.experts-exchange.com/Programming/Languages/Visual_Basic/VB_Script/Q_26609153.html

or does this one have different requirements?

Regards,

Rob.
0
 

Author Comment

by:Charlie_Melega
ID: 34241652
Hello Rob,

Yes, you answered the question very nicely in that other post.

Thanks again
0

Featured Post

[Webinar] Lessons on Recovering from Petya

Skyport is working hard to help customers recover from recent attacks, like the Petya worm. This work has brought to light some important lessons. New malware attacks like this can take down your entire environment. Learn from others mistakes on how to prevent Petya like worms.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I was working on a PowerPoint add-in the other day and a client asked me "can you implement a feature which processes a chart when it's pasted into a slide from another deck?". It got me wondering how to hook into built-in ribbon events in Office.
When we want to run, execute or repeat a statement multiple times, a loop is necessary. This article covers the two types of loops in Python: the while loop and the for loop.
This theoretical tutorial explains exceptions, reasons for exceptions, different categories of exception and exception hierarchy.
The goal of the video will be to teach the user the concept of local variables and scope. An example of a locally defined variable will be given as well as an explanation of what scope is in C++. The local variable and concept of scope will be relat…

705 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question