Please let us know how useful you find this tip by rating it below. Do you have a useful Windows tip, timesaver...
By submitting your personal information, you agree that TechTarget and its partners may contact you regarding relevant content, products and special offers.
or workaround to share? Submit it to our tip contest and you could win a prize!
I have often been asked if it's possible for Windows to "watch" a given file and perform an action if the file is modified. There hasn't been a built-in provision in Windows to do this, except in the sense that you could write a kernel-level file system filter to trap such actions.
Well, the wait is finally over. XTWare has created a free service called FileNotify that traps events on specific directories and performs an action when anything is changed or modified.
FileNotify is a lightweight program: It's a single executable that runs as a system service. There is, however, no installer -- it needs to be registered by hand, but it is easy enough to remove as well. Once set up, you can create a list of directories (with a supplied editor application) that watches for any of the following actions: file creation or modification, deleting files, modifying attributes or names (including long filenames) and changing security tokens. You can use any of these actions to trigger a command-line action, such as a batch file or an .EXE.
The program logs its actions to a text file that, by default, is FileNotify.Log (located in the directory that FileNotify itself is running in).
The program also checks directories recursively -- you can point it at a top-level directory and ask it to watch all files or folders under that directory.
Be warned that if one of the actions triggered by a file change involves modifying a file in one of those watched directories, it can create a race condition. Also, whenever a file is changed, FileNotify waits for a full second of inactivity on that file before attempting to perform any actions on its own. It does this because sometimes when a file is changed, the Last Modified attribute is updated multiple times. The delay allows all of the changes to "settle" before action is taken.
Finally, FileNotify cannot monitor activity on a single file, but you can work around this by using a batch file with an input parameter (i.e., mybatchfile.bat %1) as the on-change action. The first line of the batch file can filter for a specific file like this:
If "%1"=="filename.fil" goto myaction
Serdar Yegulalp is editor of the Windows Power Users Newsletter. Check it out for the latest advice and musings on the world of Windows network administrators -- and please share your thoughts as well!