Solved

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

Posted on 2010-11-09
7
431 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
  • 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
Gigs: Get Your Project Delivered by an Expert

Select from freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely and get projects done right.

 

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 500 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

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

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

Having just graduated from college and entered the workforce, I don’t find myself always using the tools and programs I grew accustomed to over the past four years. However, there is one program I continually find myself reverting back to…R.   So …
Whether you’re a college noob or a soon-to-be pro, these tips are sure to help you in your journey to becoming a programming ninja and stand out from the crowd.
The goal of the video will be to teach the user the difference and consequence of passing data by value vs passing data by reference in C++. An example of passing data by value as well as an example of passing data by reference will be be given. Bot…
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.

816 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

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now