Solution 1:

Virtual machines and Cygwin answer two different questions.

Virtual machines are for when you want to run multiple operating systems at the same time. It's like having two computers without the expense of purchasing two sets of hardware.

Cygwin is intended to give Windows a number of Unix tools, so that Unix geeks can more effectively use Windows (though I'd argue that Cygwin doesn't actually do that very well), and to provide some tools that have greater features than Windows provides on its own. I don't think the characterization of Cygwin providing a "linux like environment" is particularly accurate. (Cygwin is actually intended to provide a more complete POSIX development environment for Windows, and, in doing so, provides a number of utilities. The end result for end users, though, is that it merely provides tools.)

There's actually kind of a third option, Cooperative Linux, which I think actually does provide a Linux-like environment within Windows. It actually runs the Linux kernel as a process within Windows. There are some distributions that run under it; andLinux comes to mind. With these systems, you actually do have a Linux environment that can more directly interact with your Windows environment than a virtual machine can.

Solution 2:

It is still useful for running Unix tools like rsync, which you want to operate on the files on the Windows box rather than it being stuck away in a virtual machine. You can also then use the Windows scheduler for starting jobs with the tools.