Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

What I want isn't very much and I can't seem to find any free software to do it for me. I really don't want to make my own program seeing as this seems like a common scenario.

  1. Watch a specific folder(s) for changes
  2. On detected change for a file(s), copy them to a specific directory

Simply copying all changes or copying only to one directory is not good enough. The scenario is doing multiple project development where some binaries in a shared component need to be copied to multiple other project locations on disk (so I can test right away) and their debug symbols need to be copied to another location.

So, one DLL might be copied to two locations but another file (debug .pdb file) in the same directory needs to be copied to only one location.

The best solution I found that would probably work is: Total Folder Monitor

I also like it because I can save my task list as a "project" which will make it easy to share amongst the developers in source control. However, it's not free because it offers a lot more features I don't need.

Like I said, I could do this myself but I'd love to avoid the time taken to write it. I'm also pretty okay with a monitoring script (I'm on Windows), possibly even in Powershell. It just needs to be able to be stored in source control for other devs to use/change.

share|improve this question

closed as off-topic by techie007, Kevin Panko, Tog, random Feb 1 at 23:02

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking product, service, or learning material recommendations are off-topic because they become outdated quickly and attract opinion-based answers. Instead, describe your situation and the specific problem you're trying to solve. Share your research. Here are a few suggestions on how to properly ask this type of question." – techie007, Kevin Panko, Tog, random
If this question can be reworded to fit the rules in the help center, please edit the question.

    
"shared component need to be copied to multiple other project locations on disk" If they run on the same physical machine, have you considered the GAC? The copy functionality already exists as a class you can plug into with .NET (FileSystemWatcher). Continuous Integration can also be used. You can also reference an assembly outside the bin. In which case your programs can share a single reference point. stackoverflow.com/questions/2529459/… –  P.Brian.Mackey Oct 19 '11 at 14:25
    
Thanks Brian, but the GAC will not work with our project structure/environment, this is only for local debugging and is tied to source control; we also can't reference assemblies outside the bin for similar reasons. –  subkamran Oct 19 '11 at 15:38
    
I'm not sure how local debugging and source control limit your options to reference outside the bin. Just use a network share. I think you will be better off using technology that is built for the purpose rather than trying to find a tool that is an exact match for all your different needs. That or if you really can't use any of the items I listed, hook into FileSystemWatcher...I wrote console applications that use it in a matter of hours. –  P.Brian.Mackey Oct 19 '11 at 16:14
    
This sounds like a build/deployment problem, why can't you modify your build environment/server to perform these aspects of the deployment? If this is really a build tools problem, you might get better traction with this question on Stack Overflow. –  Mark Booth Oct 19 '11 at 16:58
    
It's not a B/D problem; just multiple solutions that have dependencies and want to reduce manual copying of DLLs when checking in changes/testing the different sites locally. This is not a runtime issue, this is a I-want-to-save-myself-some-headache issue. I can't spend multiple hours doing this (right now), since I have things to actually work on. I have a solution that works fairly well now and I marked it as the answer. Thanks for your guys' comments, though! –  subkamran Oct 19 '11 at 17:05
add comment

5 Answers

up vote 2 down vote accepted

How about Belvedere?

I use it to monitor my downloads folder and automatically move MP3s and image files to the appropriate directories, and to delete ZIP files after a set amount of time (because presumably I've unzipped and installed whatever was in them already).

share|improve this answer
    
It's not perfect (no multiple actions) but I think it actually does what I need it to, and allows import/export of settings. –  subkamran Oct 19 '11 at 15:33
    
I still may look at other alternatives because Belvedere is not a watcher; it just keeps running every x seconds/mins/etc. Its notification balloons are pretty useless in that case plus it uses CPU and disk every interval (since I only copy, and don't delete). –  subkamran Oct 19 '11 at 16:04
1  
No, not perfect, but sometimes good enough is, well, good enough. –  Al E. Oct 19 '11 at 16:21
    
I added a rule that runs at the end that cleans the "redist" directory. That seems to solve most of my qualms. The only thing that is incredibly annoying is I can't edit an existing folder path on the left list. Makes changing paths (something we'll do frequently) a huge pain. –  subkamran Oct 19 '11 at 17:06
add comment

The Windows RoboCopy command is quite powerful, some details here or run "robocopy /?" to get a command line reference.

It has both monitoring and scheduling options which might solve your requirement.

RoboCopy

share|improve this answer
    
This looks promising--let me take a look and get back to ya! edit: I knew about RC but did not know it included monitoring, if you're surprised I didn't look into this before posting. –  subkamran Oct 19 '11 at 13:55
    
just tried Robocopy sourcedir targetdir /MIR /MON:1 but it always waits 1 minute, I need the copy to be instant. –  rob Jan 25 '13 at 10:53
add comment

I don't know a ready-to use program for that use case, but may be a script using Windows PowerShell may be option?

The following script recognizes changes and outputs them on the console and to log files. Powershell FileSystemWatch​er

As starting with next Windows Server PowerShell becomes much more important in may be worth learning it now...

share|improve this answer
    
I thought about this, but unfortunately I am pressed for time and don't know any Powershell scripting. Maybe if I was more versed in PS I would whip one up. –  subkamran Oct 19 '11 at 15:39
add comment

Here's a Python script (I'm not the author) that allows you to specify what files/directories to monitor and the command to run after detecting changes.

https://github.com/joh/when-changed

For example, to run rake after the files in foo/ and bar/ has been modified

% ./when-changed.py koans/ src/ -c rake
When 'foo/' or 'bar/' changes, run 'rake'

I use this quite often, usually for automating pdflatex and opening the generated pdf file. In your use case, you can either run the script in multiple shells, or using start with the /B switch (similar to Unix's &).

share|improve this answer
    
This might work but probably won't be doable for multiple devs on the team since it requires Python installed and knowledge of how to do it. This has to be super easy and easily configurable for other team members (in-house and agency devs that change all the time). –  subkamran Oct 19 '11 at 13:59
add comment

Use Watch 4 Folder. It's a small, portable, free and powerful monitoring tool to monitor folder and file activities.

enter image description here

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.